Mande valency

Здесь одно и то же расстояние по хитмэпу, кластеризации:

Code
df |> 
  filter(number %in% to_keep,
         !str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |> 
  arrange(language)  |> 
  distinct(language, number, construction_type)  |> 
  pairwise_count(language, number) |> 
  rename(total = n) ->
  df_pairwise_total

df |> 
  filter(number %in% to_keep,
         !str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |> 
  group_by(number) |> 
  arrange(language) |> 
  pairwise_count(language, construction_type)  |> 
  mutate(n = 1) |> 
  group_by(item1, item2) |> 
  reframe(n = sum(n)) -> 
  df_pairwise_within_construction

df_pairwise_total |> 
  left_join(df_pairwise_within_construction) |>  
  mutate(percentage = round(n/total*100, 2),
         item1 = case_match(item1, 
                            "Dan_Gweetaa" ~ "Dan Gweetaa",
                            .default = item1),
         item2 = case_match(item2, 
                            "Dan_Gweetaa" ~ "Dan Gweetaa",
                            .default = item2)) |> 
  select(item1, item2, percentage) |> 
  mutate(item1 = factor(item1, levels = c("Guro", "Dan Gweetaa", "Mano", "Kpelle", "Kono", "Looma", "Bamana")),
         item2 = factor(item2, levels = c("Guro", "Dan Gweetaa", "Mano", "Kpelle", "Kono", "Looma", "Bamana"))) |> 
  ggplot(aes(item1, item2))+
  geom_tile(aes(fill = percentage), colour = "white") +
  geom_text(aes(label = str_c(percentage, "%")), colour = "white") +
  scale_fill_gradient(low = "lightblue", high = "navy")+
  coord_fixed()+
  labs(x = "", y = "", title = "Heatmap with all stimuli") +
  theme(legend.position = "bottom")

Code
df_pairwise_total |> 
  left_join(df_pairwise_within_construction) |>  
  mutate(percentage = 100-round(n/total*100, 2),
         item1 = case_match(item1, 
                            "Dan_Gweetaa" ~ "Dan Gweetaa",
                            .default = item1),
         item2 = case_match(item2, 
                            "Dan_Gweetaa" ~ "Dan Gweetaa",
                            .default = item2)) |> 
  select(item1, item2, percentage) |> 
  pivot_wider(names_from = item2, values_from = percentage) |> 
  arrange(item1) |> 
  select(-item1) |> 
  as.dist() ->
  dist_gold_standard

library("ape")
dist_gold_standard |>   
  hclust() |> 
  as.phylo() %>% 
  plot(main = "Clusterization with all stimuli",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5,
       font = 2)

Code
dist_gold_standard |> 
  neighborNet() |> 
  plot()
title(main = "Heatmap for all stimuli")

Я вынул из таблицы данные по дан, гуро, коно, кпелле, лоома, мано и сделал столбцы

  • number
  • cunstruction
  • exteded_cunstruction
  • postposition
  • language

Видимо, все эти примеры надо поправить. Сколько у нас наблюдений по каждому языку?

Code
df |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |> 
  count(language)
language n
Bamana 157
Dan_Gweetaa 134
Guro 124
Kono 111
Kpelle 146
Looma 115
Mano 213

А пока давайте посмотрим на общую таблицу:

Code
df_wide <- readxl::read_xlsx("../GM_merged_wide.xlsx")

Можно посчитать, сколько раз пары языков заполняют один и тот же стимул:

Code
df |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |> 
  arrange(language) |> 
  distinct(language, number) |> 
  pairwise_count(language, number) |> 
  rename(total = n) ->
  df_pairwise_total

df_pairwise_total |> 
  pivot_wider(names_from = item2, values_from = total) |> 
  arrange(item1)
item1 Bamana Dan_Gweetaa Guro Kono Kpelle Looma Mano
Bamana NA 108 105 109 114 106 118
Dan_Gweetaa 108 NA 94 98 105 95 107
Guro 105 94 NA 97 98 96 102
Kono 109 98 97 NA 107 98 110
Kpelle 114 105 98 107 NA 99 115
Looma 106 95 96 98 99 NA 104
Mano 118 107 102 110 115 104 NA

Можно посчитать, сколько раз пары языков заполняют одну и ту же конструкцию (т. е. совпадают в конструкции, в одном и том же стимуле):

Code
df |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |> 
  group_by(number) |> 
  arrange(language) |> 
  pairwise_count(language, construction_type) |> 
  mutate(n = 1) |> # to unify
  group_by(item1, item2) |> 
  reframe(n = sum(n)) ->
  df_pairwise_within_construction

df_pairwise_within_construction |>
  pivot_wider(names_from = item2, values_from = n) |> 
  arrange(item1) |> 
  select(item1, Dan_Gweetaa, Guro, Kono, Kpelle, Looma, Mano, Bamana) 
item1 Dan_Gweetaa Guro Kono Kpelle Looma Mano Bamana
Bamana 49 53 50 51 54 54 NA
Dan_Gweetaa NA 61 50 55 56 63 49
Guro 61 NA 51 59 57 65 53
Kono 50 51 NA 86 57 81 50
Kpelle 55 59 86 NA 64 93 51
Looma 56 57 57 64 NA 67 54
Mano 63 65 81 93 67 NA 54

Мне кажется, что чтобы посчитать процент совпадений, о котором просила Маша, нужно разделить последнюю таблицу на предпоследнюю:

Code
df_pairwise_total |> 
  left_join(df_pairwise_within_construction) |> 
  mutate(percentage = round(n/total*100, 3)) |> 
  select(item1, item2, percentage) |> 
  pivot_wider(names_from = item2, values_from = percentage) |> 
  arrange(item1) |> 
  select(item1, Dan_Gweetaa, Guro, Kono, Kpelle, Looma, Mano, Bamana)
item1 Dan_Gweetaa Guro Kono Kpelle Looma Mano Bamana
Bamana 45.370 50.476 45.872 44.737 50.943 45.763 NA
Dan_Gweetaa NA 64.894 51.020 52.381 58.947 58.879 45.370
Guro 64.894 NA 52.577 60.204 59.375 63.725 50.476
Kono 51.020 52.577 NA 80.374 58.163 73.636 45.872
Kpelle 52.381 60.204 80.374 NA 64.646 80.870 44.737
Looma 58.947 59.375 58.163 64.646 NA 64.423 50.943
Mano 58.879 63.725 73.636 80.870 64.423 NA 45.763

Можно построить тепловую карту:

Code
df_pairwise_total |> 
  left_join(df_pairwise_within_construction) |> 
  mutate(percentage = round(n/total*100, 2),
         item1 = case_match(item1, 
                            "Dan_Gweetaa" ~ "Dan Gweetaa",
                            .default = item1),
         item2 = case_match(item2, 
                            "Dan_Gweetaa" ~ "Dan Gweetaa",
                            .default = item2)) |> 
  select(item1, item2, percentage) |> 
  ggplot(aes(item1, item2))+
  geom_tile(aes(fill = percentage), colour = "white") +
  geom_text(aes(label = str_c(percentage, "%")), colour = "white") +
  scale_fill_gradient(low = "lightblue", high = "navy")+
  coord_fixed()+
  labs(x = "", y = "") +
  theme(legend.position = "bottom")

Теперь можем провести быструю кластеризацию:

Code
df_wide |>
  mutate(across(Guro:Bamana, function(x){ifelse(is.na(x), 0, 1)})) |> 
  select(Guro:Bamana) |> 
  t() |> 
  dist(method = "binary")  ->
  all_stimuli

all_stimuli |> 
  hclust() |> 
  as.phylo() %>%
  plot(main = "Все примеры, без фильтрации",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5,
       font = 2)

Code
all_stimuli |> 
  neighborNet() |> 
  plot()
title(main = "Все примеры, без фильтрации")

Можно еще посмотреть на кластеризацию конструкций, но это не поместиться на экран. Однако я считаю, что это было бы интересно Сереже.

Вот что будет, если взять только первые строки для каждого языка:

Code
df |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |>
  group_by(number, language) |> 
  slice(1)  |> 
  ungroup() |> 
  select(number, language, construction_type) |> 
  mutate(construction_type2 = 1) |> 
  pivot_wider(names_from = language, values_from = construction_type2, values_fill = 0) |> 
  select(Bamana:Mano)  |> 
  t() |> 
  dist(method = "binary")  ->
  sample_first_construction

sample_first_construction |> 
  hclust() |> 
  as.phylo() %>%
  plot(main = "Выборка с первыми строками для каждого языка",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5,
       font = 2)

Code
sample_first_construction |> 
  neighborNet() |> 
  plot()
title(main = "Выборка с первыми строками для каждого языка")

МХ: А что будет, если выбрать случайный эквивалент, а не первую строку?

Вот что будет, если взять случайный эквивалент для каждого языка set.seed(42) (такие же 3, 5, 7, 12, 13, 15; похож на 4, 8, 11):

Code
set.seed(42)
df |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |>
  group_by(number, language) |> 
  slice_sample(n = 1) |> 
  ungroup() |> 
  select(number, language, construction_type) |> 
  mutate(construction_type2 = 1) |> 
  pivot_wider(names_from = language, values_from = construction_type2, values_fill = 0) |> 
  select(Bamana:Mano)  |> 
  t() |> 
  dist(method = "binary")  ->
  sample_random_construction

sample_random_construction |> 
  hclust() |> 
  as.phylo() %>%
  plot(main = "Clusterization with random equivalents",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5, 
       font = 2)

Code
sample_random_construction |> 
  neighborNet() |> 
  plot()
title(main = "Выборка со случайным эквивалентом для каждого языка")

Вот что будет, если взять случайный эквивалент для каждого языка set.seed(57) (такие же 1, 2, 6, 9, 10, 14):

Code
set.seed(57)
df |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |>
  group_by(number, language) |> 
  slice_sample(n = 1) |> 
  ungroup() |> 
  select(number, language, construction_type) |> 
  mutate(construction_type2 = 1) |> 
  pivot_wider(names_from = language, values_from = construction_type2, values_fill = 0) |> 
  select(Bamana:Mano)  |> 
  t() |> 
  dist(method = "binary")  ->
  sample_random_construction

sample_random_construction |> 
  hclust() |> 
  as.phylo() %>%
  plot(main = "Clusterization with random equivalents",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5, 
       font = 2)

Code
sample_random_construction |> 
  neighborNet() |> 
  plot()
title(main = "Выборка со случайным эквивалентом для каждого языка")

Вот что будет, если взять только популярные конструкции:

Code
df_wide |> 
  group_by(number) |> 
  filter(n == max(n))  |> 
  ungroup() |> 
  mutate(across(Guro:Bamana, function(x){ifelse(is.na(x), 0, 1)})) |> 
  select(Guro:Bamana) |> 
  t() |> 
  dist(method = "binary")  ->
  sample_popular_construction

sample_popular_construction |> 
  hclust() |> 
  as.phylo() %>%
  plot(main = "Выборка с популярынми конструкциями",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5, 
       font = 2)

Code
sample_popular_construction  |> 
  neighborNet() |> 
  plot()
title(main = "Выборка с популярынми конструкциями")

МХ: я также думаю что можно попробовать проанализировать только те стимулы где у ВСЕХ языков есть эквиваленты

Вот список стимулов, для которых есть все шесть языков:

Code
df |> 
  count(number, language) |> 
  count(number) |>
  filter(n == 7) |> 
  pull(number) ->
  to_keep
to_keep
 [1]   1   2   3   4   6   7   8  11  12  14  16  17  18  19  22  23  25  26  27
[20]  28  29  31  32  33  34  35  36  38  39  40  41  43  44  46  49  50  51  53
[39]  55  57  58  60  63  66  67  68  69  70  71  72  74  75  76  77  78  79  80
[58]  81  83  85  89  90  91  93  94  96  98  99 100 101 102 105 106 108 109 110
[77] 117 118 119 121

Или наоборот, вот номера, для которых не во всех языках есть данные:

Code
df |> 
  count(number, language) |> 
  count(number) |> 
  filter(n < 7) |> 
  pull(number)
 [1]   5   9  10  13  15  20  21  24  30  37  42  45  47  48  52  54  56  59  61
[20]  62  64  65  73  82  84  86  87  88  92  95  97 103 104 107 111 113 115 116
[39] 120 123 124 126 127 129 130

Запустим кластеризацию:

Code
df_wide |> 
  filter(number %in% to_keep) |> 
  mutate(across(Guro:Bamana, function(x){ifelse(is.na(x), 0, 1)}))  |> 
  select(Guro:Bamana) |> 
  t() |> 
  dist(method = "binary") ->
  stimuli_sample_all_langs

stimuli_sample_all_langs |> 
  hclust() |> 
  as.phylo() %>%
  plot(main = "Clusterization with common stimuli",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5, 
       font = 2)

Code
stimuli_sample_all_langs  |> 
  neighborNet() |> 
  plot()
title(main = "Выборка стимулов со всеми 6 языками")

Code
df |> 
  filter(number %in% to_keep,
         !str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |> 
  arrange(language)  |> 
  distinct(language, number, construction_type)  |> 
  pairwise_count(language, number) |> 
  rename(total = n) ->
  df_pairwise_total

df |> 
  filter(number %in% to_keep,
         !str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |> 
  group_by(number) |> 
  arrange(language) |> 
  pairwise_count(language, construction_type)  |> 
  mutate(n = 1) |> 
  group_by(item1, item2) |> 
  reframe(n = sum(n)) -> 
  df_pairwise_within_construction

df_pairwise_total |> 
  left_join(df_pairwise_within_construction) |>  
  mutate(percentage = round(n/total*100, 2),
         item1 = case_match(item1, 
                            "Dan_Gweetaa" ~ "Dan Gweetaa",
                            .default = item1),
         item2 = case_match(item2, 
                            "Dan_Gweetaa" ~ "Dan Gweetaa",
                            .default = item2)) |> 
  select(item1, item2, percentage) |> 
  ggplot(aes(item1, item2))+
  geom_tile(aes(fill = percentage), colour = "white") +
  geom_text(aes(label = str_c(percentage, "%")), colour = "white") +
  scale_fill_gradient(low = "lightblue", high = "navy")+
  coord_fixed()+
  labs(x = "", y = "", title = "Выборка стимулов со всеми 6 языками") +
  theme(legend.position = "bottom")

Интересно, что выборка со случайным эквивалентом и выборка только тех стимулов, где есть данные по всем шести языкам, дает такие разные результаты. Что будет если взять выборку данных по всем языкам и В НЕЙ провести случайную выборку эквивалентной конструкции?

Code
df |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type),
         number %in% to_keep) |>
  group_by(number, language) |> 
  slice_sample(n = 1) |> 
  ungroup() |> 
  select(number, language, construction_type) |> 
  mutate(construction_type2 = 1) |> 
  pivot_wider(names_from = language, values_from = construction_type2, values_fill = 0) |> 
  select(Bamana:Mano)  |> 
  t() |> 
  dist(method = "binary") ->
  stimuli_sample_all_langs_and_random

stimuli_sample_all_langs_and_random |> 
  hclust() |> 
  as.phylo()  %>%
  plot(main = "clusterization with random equivalents and common stimuli",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5, 
       font = 2)

Code
stimuli_sample_all_langs_and_random  |> 
  neighborNet() |> 
  plot()
title(main = "Выборка стимулов со всеми 6 языками  (случайный эквивалент)")

Перед тем, как приступить к перекодированию, которое предложила Маша К., посмотрим статистику конструкций по языкам:

Code
df |> 
  count(language, construction_type) |>
  group_by(construction_type) |> 
  mutate(overall = sum(n)) |>  
  pivot_wider(names_from = language, values_from = n, values_fill = 0) |> 
  arrange(desc(overall)) |> 
  select(construction_type, overall, Guro, Dan_Gweetaa, Mano, Kpelle, Kono, Looma, Bamana)
construction_type overall Guro Dan_Gweetaa Mano Kpelle Kono Looma Bamana
X Aux Y V 293 44 37 46 35 31 42 58
X Aux V Y Ad 178 23 22 35 23 20 21 34
X Aux Y N V 105 5 11 36 22 12 9 10
X Aux N V Y Ad 66 12 15 10 6 6 12 5
X Aux V loc 37 6 5 8 7 5 6 0
Xgen N Aux V Y Ad 35 8 3 13 5 1 4 1
X Aux Xrefl N V Y Ad 33 4 2 11 8 5 0 3
Y be X Ad 19 2 1 4 4 4 2 2
Ygen N be X Ad 18 0 2 4 5 4 2 1
Xgen N be Y Ad 16 1 1 5 3 2 3 1
Y Aux V X Ad 16 3 2 2 1 2 2 4
X be Y Ad 15 1 1 2 3 4 1 3
Ygen N Aux V X Ad 13 0 2 7 3 1 0 0
X+Y Aux N V 12 0 0 5 5 2 0 0
Ygen N Aux X V 10 0 7 1 1 1 0 0
X+Y Aux V 9 1 0 0 3 1 1 3
X Aux Xrefl V Y Ad 8 1 1 2 1 1 1 1
X Aux N V 8 0 1 2 2 2 1 0
Y Aux X N V 7 1 2 2 2 0 0 0
Y Aux X V 6 0 1 0 0 0 0 5
X Aux Z V Y Ad 5 3 0 1 0 0 0 1
Xgen Y Aux V 4 1 1 1 0 0 1 0
X+Y be N Ad 3 0 0 0 1 1 0 1
X Aux 3sg V Y Ad 3 1 1 1 0 0 0 0
Xgen Y Aux Xrefl V 3 0 0 0 2 1 0 0
Ygen N be.neg X Ad 3 0 0 1 1 1 0 0
X+Y Aux V X+Yrefl Ad 3 0 0 3 0 0 0 0
X Aux V Y N Ad 2 0 0 0 0 0 0 2
X V Aux Y Ad 2 0 0 0 0 0 0 2
X be X Ad 2 0 0 0 0 0 0 2
X be Y N Ad 2 0 1 0 0 0 0 1
Xgen Y Aux X V 2 0 1 0 0 0 0 1
Y Aux Y V 2 0 0 0 0 0 0 2
X Aux Xrefl N V Y N Ad 2 0 2 0 0 0 0 0
X be Y 2 1 1 0 0 0 0 0
Z Aux X V Y 2 1 1 0 0 0 0 0
Xgen N Aux N V Y Ad 2 2 0 0 0 0 0 0
X be.neg Y Ad 2 0 0 1 1 0 0 0
N Adj be X Ad Vinf Y Ad 1 0 0 0 0 0 0 1
X Aux N N V Y Ad 1 0 0 0 0 0 0 1
X Aux V Aux V Y Ad 1 0 0 0 0 0 0 1
X Aux V Y lá 1 0 0 0 0 0 0 1
X Aux Xrefl N N V Y Ad 1 0 0 0 0 0 0 1
X Aux Xrefl SELF V Y Ad 1 0 0 0 0 0 0 1
X Aux Y Ad 1 0 0 0 0 0 0 1
X Aux Y V Refl Ad 1 0 0 0 0 0 0 1
X N V Y 1 0 0 0 0 0 0 1
Xgen N Aux Y Ad 1 0 0 0 0 0 0 1
Y Aux V Aux V X Ad 1 0 0 0 0 0 0 1
Y Aux X N N V 1 0 0 0 0 0 0 1
Y Aux Xposs N V 1 0 0 0 0 0 0 1
Ygen N Aux X Ad 1 0 0 0 0 0 0 1
N be X Y Ad 1 0 1 0 0 0 0 0
X Aux 3 Z V Y Ad 1 0 1 0 0 0 0 0
X Aux 3sg N V Y Ad 1 0 1 0 0 0 0 0
X Aux Yposs N V 1 0 1 0 0 0 0 0
X Aux.neg V Y Ad 1 0 1 0 0 0 0 0
Xgen Y N Aux V 1 0 1 0 0 0 0 0
Y Aux V X N Ad N Ad 1 0 1 0 0 0 0 0
Ygen N be X N Ad 1 0 1 0 0 0 0 0
Z Aux V X Y loc 1 0 1 0 0 0 0 0
Z Aux X Y V 1 0 1 0 0 0 0 0
3SG Aux V Y Ad 1 1 0 0 0 0 0 0
Y Aux X N V Xrefl Ad 1 1 0 0 0 0 0 0
Yposs X Aux V 1 1 0 0 0 0 0 0
X Aux.Neg V Y Ad 1 0 0 0 0 1 0 0
X N Aux.Neg V Y Ad 1 0 0 0 0 1 0 0
X+Y Aux V Z Ad 1 0 0 0 0 1 0 0
Y N be.neg X Ad 1 0 0 0 0 1 0 0
X+Y Aux X+Yrefl N V 3sg Refl Ad 1 0 0 0 1 0 0 0
X+Y Aux X+Yrefl recp N V 1 0 0 0 1 0 0 0
X Aux N V Y N Ad 1 0 0 0 0 0 1 0
X N Aux V Y Ad 1 0 0 0 0 0 1 0
X int N Aux V Y Ad 1 0 0 0 0 0 1 0
X+Y Aux N V Z Ad 1 0 0 0 0 0 1 0
X+Y Aux V Int Ad 1 0 0 0 0 0 1 0
X+Y Aux gà N Num 1 0 0 0 0 0 1 0
Xposs Y be.neg V 1 0 0 0 0 0 1 0
3sg N Vger be.neg Y Ad X Ad 1 0 0 1 0 0 0 0
X Aux Y V adj 1 0 0 1 0 0 0 0
X be adj Y Ad 1 0 0 1 0 0 0 0
X+Y Aux V X+Yrefl recp Ad 1 0 0 1 0 0 0 0
X+Y Aux V adv X+Yrefl recp Ad 1 0 0 1 0 0 0 0
X+Y Aux X+Yrefl N V 1 0 0 1 0 0 0 0
X+Y N Aux V 1 0 0 1 0 0 0 0
Xgen N be 1 0 0 1 0 0 0 0
Xgen Y Aux Xpron V 1 0 0 1 0 0 0 0
Z Aux 3sg V X Ad Y 1 0 0 1 0 0 0 0

Маша предложила классификацию, которую я попробую воспроизвести.

  1. простая переходная вида X Aux Y V (только этот случай)
  2. простая непереходная X Aux V Y Ad, X Aux V loc, X+Y Aux V, Y Aux V X Ad (по идее исчерпывающий список, а что я забыла?)
  3. конструкция с копулой - можно взять автоматически все случаи, где в формуле есть копула be: Y be X Ad, X be Y Ad, X be adj Y Ad, N be Xgen Y Ad, X+Y be N Ad и т.д.
  4. некопульная конструкция со сложным глаголом - взять автоматически все случаи, где в формуле выполняется два условия: есть Aux (=нет be) и есть хотя бы одно N (вместе переходные, и непереходные) - X Aux N V Y Ad; X Aux Y N V; Xgen N Aux V Y Ad и т.д.

По идее это не исчерпывающий список, останется что-то на периферии вроде X+Y Aux V X+Ypron recp Ad, но это редкие штуки.

Code
df |> 
  count(language, construction_type) |>
  mutate(type = case_when(construction_type == "X Aux Y V" ~ "transitive",
                          str_detect(construction_type, "Aux") &
                            !str_detect(construction_type, "N") ~ "intransitive",
                          str_detect(construction_type, "be") ~ "copula",
                          str_detect(construction_type, "Aux") &
                            str_detect(construction_type, "N") ~ "complex verb",
                          TRUE ~ "other")) |> 
  group_by(construction_type) |> 
  mutate(overall = sum(n)) |>  
  pivot_wider(names_from = language, values_from = n, values_fill = 0) |> 
  arrange(desc(overall)) |> 
  select(construction_type, type,   overall, Guro, Dan_Gweetaa, Mano, Kpelle, Kono, Looma, Bamana)
construction_type type overall Guro Dan_Gweetaa Mano Kpelle Kono Looma Bamana
X Aux Y V transitive 293 44 37 46 35 31 42 58
X Aux V Y Ad intransitive 178 23 22 35 23 20 21 34
X Aux Y N V complex verb 105 5 11 36 22 12 9 10
X Aux N V Y Ad complex verb 66 12 15 10 6 6 12 5
X Aux V loc intransitive 37 6 5 8 7 5 6 0
Xgen N Aux V Y Ad complex verb 35 8 3 13 5 1 4 1
X Aux Xrefl N V Y Ad complex verb 33 4 2 11 8 5 0 3
Y be X Ad copula 19 2 1 4 4 4 2 2
Ygen N be X Ad copula 18 0 2 4 5 4 2 1
Xgen N be Y Ad copula 16 1 1 5 3 2 3 1
Y Aux V X Ad intransitive 16 3 2 2 1 2 2 4
X be Y Ad copula 15 1 1 2 3 4 1 3
Ygen N Aux V X Ad complex verb 13 0 2 7 3 1 0 0
X+Y Aux N V complex verb 12 0 0 5 5 2 0 0
Ygen N Aux X V complex verb 10 0 7 1 1 1 0 0
X+Y Aux V intransitive 9 1 0 0 3 1 1 3
X Aux Xrefl V Y Ad intransitive 8 1 1 2 1 1 1 1
X Aux N V complex verb 8 0 1 2 2 2 1 0
Y Aux X N V complex verb 7 1 2 2 2 0 0 0
Y Aux X V intransitive 6 0 1 0 0 0 0 5
X Aux Z V Y Ad intransitive 5 3 0 1 0 0 0 1
Xgen Y Aux V intransitive 4 1 1 1 0 0 1 0
X+Y be N Ad copula 3 0 0 0 1 1 0 1
X Aux 3sg V Y Ad intransitive 3 1 1 1 0 0 0 0
Xgen Y Aux Xrefl V intransitive 3 0 0 0 2 1 0 0
Ygen N be.neg X Ad copula 3 0 0 1 1 1 0 0
X+Y Aux V X+Yrefl Ad intransitive 3 0 0 3 0 0 0 0
X Aux V Y N Ad complex verb 2 0 0 0 0 0 0 2
X V Aux Y Ad intransitive 2 0 0 0 0 0 0 2
X be X Ad copula 2 0 0 0 0 0 0 2
X be Y N Ad copula 2 0 1 0 0 0 0 1
Xgen Y Aux X V intransitive 2 0 1 0 0 0 0 1
Y Aux Y V intransitive 2 0 0 0 0 0 0 2
X Aux Xrefl N V Y N Ad complex verb 2 0 2 0 0 0 0 0
X be Y copula 2 1 1 0 0 0 0 0
Z Aux X V Y intransitive 2 1 1 0 0 0 0 0
Xgen N Aux N V Y Ad complex verb 2 2 0 0 0 0 0 0
X be.neg Y Ad copula 2 0 0 1 1 0 0 0
N Adj be X Ad Vinf Y Ad copula 1 0 0 0 0 0 0 1
X Aux N N V Y Ad complex verb 1 0 0 0 0 0 0 1
X Aux V Aux V Y Ad intransitive 1 0 0 0 0 0 0 1
X Aux V Y lá intransitive 1 0 0 0 0 0 0 1
X Aux Xrefl N N V Y Ad complex verb 1 0 0 0 0 0 0 1
X Aux Xrefl SELF V Y Ad intransitive 1 0 0 0 0 0 0 1
X Aux Y Ad intransitive 1 0 0 0 0 0 0 1
X Aux Y V Refl Ad intransitive 1 0 0 0 0 0 0 1
X N V Y other 1 0 0 0 0 0 0 1
Xgen N Aux Y Ad complex verb 1 0 0 0 0 0 0 1
Y Aux V Aux V X Ad intransitive 1 0 0 0 0 0 0 1
Y Aux X N N V complex verb 1 0 0 0 0 0 0 1
Y Aux Xposs N V complex verb 1 0 0 0 0 0 0 1
Ygen N Aux X Ad complex verb 1 0 0 0 0 0 0 1
N be X Y Ad copula 1 0 1 0 0 0 0 0
X Aux 3 Z V Y Ad intransitive 1 0 1 0 0 0 0 0
X Aux 3sg N V Y Ad complex verb 1 0 1 0 0 0 0 0
X Aux Yposs N V complex verb 1 0 1 0 0 0 0 0
X Aux.neg V Y Ad intransitive 1 0 1 0 0 0 0 0
Xgen Y N Aux V complex verb 1 0 1 0 0 0 0 0
Y Aux V X N Ad N Ad complex verb 1 0 1 0 0 0 0 0
Ygen N be X N Ad copula 1 0 1 0 0 0 0 0
Z Aux V X Y loc intransitive 1 0 1 0 0 0 0 0
Z Aux X Y V intransitive 1 0 1 0 0 0 0 0
3SG Aux V Y Ad intransitive 1 1 0 0 0 0 0 0
Y Aux X N V Xrefl Ad complex verb 1 1 0 0 0 0 0 0
Yposs X Aux V intransitive 1 1 0 0 0 0 0 0
X Aux.Neg V Y Ad complex verb 1 0 0 0 0 1 0 0
X N Aux.Neg V Y Ad complex verb 1 0 0 0 0 1 0 0
X+Y Aux V Z Ad intransitive 1 0 0 0 0 1 0 0
Y N be.neg X Ad copula 1 0 0 0 0 1 0 0
X+Y Aux X+Yrefl N V 3sg Refl Ad complex verb 1 0 0 0 1 0 0 0
X+Y Aux X+Yrefl recp N V complex verb 1 0 0 0 1 0 0 0
X Aux N V Y N Ad complex verb 1 0 0 0 0 0 1 0
X N Aux V Y Ad complex verb 1 0 0 0 0 0 1 0
X int N Aux V Y Ad complex verb 1 0 0 0 0 0 1 0
X+Y Aux N V Z Ad complex verb 1 0 0 0 0 0 1 0
X+Y Aux V Int Ad intransitive 1 0 0 0 0 0 1 0
X+Y Aux gà N Num complex verb 1 0 0 0 0 0 1 0
Xposs Y be.neg V copula 1 0 0 0 0 0 1 0
3sg N Vger be.neg Y Ad X Ad copula 1 0 0 1 0 0 0 0
X Aux Y V adj intransitive 1 0 0 1 0 0 0 0
X be adj Y Ad copula 1 0 0 1 0 0 0 0
X+Y Aux V X+Yrefl recp Ad intransitive 1 0 0 1 0 0 0 0
X+Y Aux V adv X+Yrefl recp Ad intransitive 1 0 0 1 0 0 0 0
X+Y Aux X+Yrefl N V complex verb 1 0 0 1 0 0 0 0
X+Y N Aux V complex verb 1 0 0 1 0 0 0 0
Xgen N be copula 1 0 0 1 0 0 0 0
Xgen Y Aux Xpron V intransitive 1 0 0 1 0 0 0 0
Z Aux 3sg V X Ad Y intransitive 1 0 0 1 0 0 0 0

Вот, что получилось. Маш, что исправить? Вот саммари:

Code
df |> 
  mutate(type = case_when(construction_type == "X Aux Y V" ~ "transitive",
                          str_detect(construction_type, "Aux") &
                            !str_detect(construction_type, "N") ~ "intransitive",
                          str_detect(construction_type, "be") ~ "copula",
                          str_detect(construction_type, "Aux") &
                            str_detect(construction_type, "N") ~ "complex verb",
                          TRUE ~ "other")) |> 
  count(type, language) |> 
  pivot_wider(names_from = language, values_from = n, values_fill = 0)  |> 
  arrange(-Looma) |> 
  select(type, Guro, Dan_Gweetaa, Mano, Kpelle, Kono, Looma, Bamana)
type Guro Dan_Gweetaa Mano Kpelle Kono Looma Bamana
transitive 44 37 46 35 31 42 58
intransitive 42 39 58 37 31 33 59
complex verb 33 49 89 56 32 31 27
copula 5 9 20 18 17 9 12
other 0 0 0 0 0 0 1

Во-вторых, есть отдельная просьба про распределение конструкций и глаголов. В первом листе stimuli_general в столбце B есть семантическая разметка глаголов. Добавь её, пожалуйста, в глагольную таблицу, которую ты будешь снова генерировать. А дальше я бы попросила сделать следующее. Посчитать для каждого глагола, сколько ему в наших языках соответствует разных конструкций из 4 типов, выделенных выше. А потом слить глаголы из одной семантической группы и посчитать для семантических групп вместе статистику по конструкциям. Грубо говоря я хочу проверить, верно ли, что у глаголов вида effect будет больше переходных конструкций, а у feeling больше сложных глаголов, т.к. более абстрактные значения языки склонны выражать метафорически.

Code
df |> 
  left_join(stimuli) |> 
    mutate(type = case_when(construction_type == "X Aux Y V" ~ "transitive",
                          str_detect(construction_type, "Aux") &
                            !str_detect(construction_type, "N") ~ "intransitive",
                          str_detect(construction_type, "be") ~ "copula",
                          str_detect(construction_type, "Aux") &
                            str_detect(construction_type, "N") ~ "complex verb",
                          TRUE ~ "other")) |> 
  count(type, language, semantic_type) |> 
  mutate(language = str_replace(language, "_", " "),
         language = factor(language, levels = c("Guro", "Dan Gweetaa", "Mano", "Kpelle", "Kono", "Looma", "Bamana"))) |> 
  ggplot(aes(n, type))+
  geom_col()+
  facet_grid(semantic_type~language, scales = "free")

Ну вот примерно, то, что ты имела в виду, наверное, но это все нужно пересчитать, после того, как мы утвердим тип каждой из конструкции.

Какие адлоги есть для каждого языка?

Code
df |>
  mutate(adposition = str_split(adposition, ", ")) |> 
  unnest_longer(adposition) |> 
  count(language, adposition) |> 
  na.omit()
language adposition n
Bamana bólo 5
Bamana fɛ̀ 7
Bamana kàn 5
Bamana kɔ́ 4
Bamana kɔ́nɔ 1
Bamana kɔ́rɔ 1
Bamana lá 29
Bamana mà 5
Bamana nɔ̀fɛ̀ 2
Bamana yé 6
Bamana ɲɛ́ 1
Dan_Gweetaa bhàa 2
Dan_Gweetaa bhȁ 23
Dan_Gweetaa dhi̋ɤ 3
Dan_Gweetaa dhɛ̏ 2
Dan_Gweetaa gɔ̏ 5
Dan_Gweetaa gɯ́ 5
Dan_Gweetaa ká 14
Dan_Gweetaa kèŋ̏ 1
Dan_Gweetaa loc 6
Dan_Gweetaa pi̋ɤ 2
Dan_Gweetaa tȁ 4
Dan_Gweetaa zɯ̏ 1
Guro jì 2
Guro la 2
Guro leè 3
Guro loc 6
Guro 8
Guro ta 5
Guro và 8
Guro ya̰ 9
Guro zì 2
Guro zuo 2
Guro ɓa̰ 22
Kono 10
Kono hù 5
Kono lá 1
Kono loc 5
Kono mà 27
Kono mɛ̌i 1
Kono pòò 1
Kono pɔ̀ 4
Kono yêi 4
Kpelle 12
Kpelle hù 3
Kpelle lá 1
Kpelle loc 7
Kpelle púlû 4
Kpelle pɔ́ 3
Kpelle yêi 4
Kpelle ɓà 33
Kpelle ɲá 1
Looma bà 7
Looma bù 1
Looma bɛ̀ 5
Looma gà 10
Looma kómá 1
Looma loc 6
Looma mà 19
Looma pòlù 2
Looma sù 3
Looma tá 2
Looma yà 3
Mano bà 5
Mano gé 1
Mano gɛ̀nɛ̀ 1
Mano ká 23
Mano kɛ̀lɛ̀ 6
Mano là 7
Mano loc 8
Mano lɛ̀ɛ̄ 6
Mano mɔ̀ 45
Mano píé 7
Mano yí 1
Mano ŋwɛ́ŋ̀ 4

Какие были раньше проблемы:

  • в коно нет адлогов
  • в дан гвета есть адлоги dhi̋ɤ и dhiɤ̋, bhȁ и bhàa, которые, наверное, про одно и то же. Кроме того есть адлог loc.
  • в гуро есть адлоги léè и leè, lɛ̄ и lɛ, ɓa̰ и ɓā̰. Кроме того есть адлог loc.
  • в лома есть адлоги mà и mà̀ (с двумя знаками тона). Кроме того есть адлог loc.
  • в мано есть адлоги píé и píé (я не понимаю в чем разница…).

Проблемы на 15.02.2023:

  • В гуро ɓa̰ и ɓā̰ — разное?
  • В гуро ya̰ и yā̰ — разное?

Я не совсем понял, что написала МХ, так что я пока посчитал вот такое вот. Какие адлоги из разных языков встречаются друг с другом в одной расширеной конструкции внутри одного стимула?

Code
df |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type),
         !is.na(adposition)) |>  
  group_by(number) |> 
  mutate(adposition = str_c(language, "__", adposition)) |> 
  pairwise_count(adposition, construction_type)  |>
  group_by(item1, item2) |> 
  reframe(n = sum(n)) |> 
  arrange(desc(n))
item1 item2 n
Kpelle__ɓà Mano__mɔ̀ 22
Mano__mɔ̀ Kpelle__ɓà 22
Kono__mà Kpelle__ɓà 16
Kpelle__ɓà Kono__mà 16
Kono__mà Mano__mɔ̀ 15
Mano__mɔ̀ Kono__mà 15
Kono__à Kpelle__à 10
Kpelle__à Kono__à 10
Dan_Gweetaa__bhȁ Kpelle__ɓà 7
Dan_Gweetaa__bhȁ Mano__mɔ̀ 7
Kpelle__à Mano__ká 7
Kpelle__ɓà Dan_Gweetaa__bhȁ 7
Mano__ká Kpelle__à 7
Mano__mɔ̀ Dan_Gweetaa__bhȁ 7
Guro__ɓa̰ Kpelle__ɓà 6
Kono__à Mano__ká 6
Kpelle__ɓà Guro__ɓa̰ 6
Mano__ká Kono__à 6
Bamana__lá Kpelle__ɓà 5
Bamana__lá Mano__mɔ̀ 5
Dan_Gweetaa__loc Guro__loc 5
Dan_Gweetaa__loc Kono__loc 5
Dan_Gweetaa__loc Kpelle__loc 5
Dan_Gweetaa__loc Looma__loc 5
Dan_Gweetaa__loc Mano__loc 5
Guro__loc Dan_Gweetaa__loc 5
Guro__loc Kono__loc 5
Guro__loc Kpelle__loc 5
Guro__loc Looma__loc 5
Guro__loc Mano__loc 5
Guro__ɓa̰ Kono__mà 5
Guro__ɓa̰ Mano__mɔ̀ 5
Kono__loc Dan_Gweetaa__loc 5
Kono__loc Guro__loc 5
Kono__loc Kpelle__loc 5
Kono__loc Looma__loc 5
Kono__loc Mano__loc 5
Kono__mà Guro__ɓa̰ 5
Kono__mà Looma__mà 5
Kpelle__loc Dan_Gweetaa__loc 5
Kpelle__loc Guro__loc 5
Kpelle__loc Kono__loc 5
Kpelle__loc Looma__loc 5
Kpelle__loc Mano__loc 5
Kpelle__ɓà Bamana__lá 5
Kpelle__ɓà Looma__mà 5
Looma__loc Dan_Gweetaa__loc 5
Looma__loc Guro__loc 5
Looma__loc Kono__loc 5
Looma__loc Kpelle__loc 5
Looma__loc Mano__loc 5
Looma__mà Kono__mà 5
Looma__mà Kpelle__ɓà 5
Looma__mà Mano__mɔ̀ 5
Mano__loc Dan_Gweetaa__loc 5
Mano__loc Guro__loc 5
Mano__loc Kono__loc 5
Mano__loc Kpelle__loc 5
Mano__loc Looma__loc 5
Mano__mɔ̀ Bamana__lá 5
Mano__mɔ̀ Guro__ɓa̰ 5
Mano__mɔ̀ Looma__mà 5
Dan_Gweetaa__bhȁ Kono__mà 4
Dan_Gweetaa__ká Guro__ɓa̰ 4
Guro__ɓa̰ Dan_Gweetaa__ká 4
Kono__mà Dan_Gweetaa__bhȁ 4
Kono__yêi Kpelle__yêi 4
Kpelle__yêi Kono__yêi 4
Bamana__lá Dan_Gweetaa__bhȁ 3
Bamana__lá Dan_Gweetaa__ká 3
Bamana__lá Guro__ɓa̰ 3
Bamana__lá Kono__mà 3
Bamana__lá Looma__mà 3
Dan_Gweetaa__bhȁ Bamana__lá 3
Dan_Gweetaa__ká Bamana__lá 3
Dan_Gweetaa__ká Guro__ya̰ 3
Guro__lɛ Kpelle__ɓà 3
Guro__và Kpelle__ɓà 3
Guro__và Looma__mà 3
Guro__và Mano__mɔ̀ 3
Guro__ya̰ Dan_Gweetaa__ká 3
Guro__ya̰ Kono__à 3
Guro__ya̰ Kpelle__à 3
Guro__ɓa̰ Bamana__lá 3
Kono__à Guro__ya̰ 3
Kono__mà Bamana__lá 3
Kono__mà Looma__bà 3
Kono__yêi Mano__kɛ̀lɛ̀ 3
Kpelle__à Guro__ya̰ 3
Kpelle__yêi Mano__kɛ̀lɛ̀ 3
Kpelle__ɓà Guro__lɛ 3
Kpelle__ɓà Guro__và 3
Kpelle__ɓà Looma__bà 3
Kpelle__ɓà Mano__ká 3
Looma__bà Kono__mà 3
Looma__bà Kpelle__ɓà 3
Looma__bà Mano__mɔ̀ 3
Looma__mà Bamana__lá 3
Looma__mà Guro__và 3
Mano__ká Kpelle__ɓà 3
Mano__kɛ̀lɛ̀ Kono__yêi 3
Mano__kɛ̀lɛ̀ Kpelle__yêi 3
Mano__mɔ̀ Guro__và 3
Mano__mɔ̀ Looma__bà 3
Bamana__bólo Kono__yêi 2
Bamana__bólo Kpelle__yêi 2
Bamana__fɛ̀ Mano__píé 2
Bamana__kɔ́ Guro__zuo 2
Bamana__kɔ́ Kpelle__púlû 2
Bamana__lá Guro__và 2
Bamana__lá Kono__hù 2
Bamana__lá Kpelle__hù 2
Bamana__lá Looma__bà 2
Bamana__lá Mano__ká 2
Bamana__yé Guro__lɛ 2
Bamana__yé Looma__bɛ̀ 2
Dan_Gweetaa__bhȁ Guro__ta 2
Dan_Gweetaa__bhȁ Guro__và 2
Dan_Gweetaa__gɔ̏ Guro__leè 2
Dan_Gweetaa__gɯ́ Kono__mà 2
Dan_Gweetaa__gɯ́ Kpelle__ɓà 2
Dan_Gweetaa__gɯ́ Looma__mà 2
Dan_Gweetaa__gɯ́ Mano__mɔ̀ 2
Dan_Gweetaa__ká Guro__và 2
Dan_Gweetaa__ká Kono__à 2
Dan_Gweetaa__ká Kono__mà 2
Dan_Gweetaa__ká Kpelle__à 2
Dan_Gweetaa__ká Mano__ká 2
Dan_Gweetaa__ká Mano__mɔ̀ 2
Dan_Gweetaa__tȁ Guro__ta 2
Guro__leè Dan_Gweetaa__gɔ̏ 2
Guro__lɛ Bamana__yé 2
Guro__lɛ Mano__lɛ̀ɛ̄ 2
Guro__lɛ Mano__mɔ̀ 2
Guro__ta Dan_Gweetaa__bhȁ 2
Guro__ta Dan_Gweetaa__tȁ 2
Guro__ta Kono__mà 2
Guro__ta Kpelle__ɓà 2
Guro__ta Mano__mɔ̀ 2
Guro__và Bamana__lá 2
Guro__và Dan_Gweetaa__bhȁ 2
Guro__và Dan_Gweetaa__ká 2
Guro__và Kpelle__pɔ́ 2
Guro__và Mano__píé 2
Guro__ya̰ Mano__ká 2
Guro__zuo Bamana__kɔ́ 2
Guro__zuo Kpelle__púlû 2
Guro__ɓa̰ Looma__gà 2
Guro__ɓa̰ Looma__mà 2
Kono__à Dan_Gweetaa__ká 2
Kono__à Looma__gà 2
Kono__hù Bamana__lá 2
Kono__hù Kpelle__hù 2
Kono__mà Dan_Gweetaa__gɯ́ 2
Kono__mà Dan_Gweetaa__ká 2
Kono__mà Guro__ta 2
Kono__mà Mano__ká 2
Kono__yêi Bamana__bólo 2
Kono__yêi Looma__yà 2
Kpelle__à Dan_Gweetaa__ká 2
Kpelle__à Looma__gà 2
Kpelle__hù Bamana__lá 2
Kpelle__hù Kono__hù 2
Kpelle__púlû Bamana__kɔ́ 2
Kpelle__púlû Guro__zuo 2
Kpelle__púlû Mano__píé 2
Kpelle__pɔ́ Guro__và 2
Kpelle__pɔ́ Mano__píé 2
Kpelle__yêi Bamana__bólo 2
Kpelle__yêi Looma__yà 2
Kpelle__ɓà Dan_Gweetaa__gɯ́ 2
Kpelle__ɓà Guro__ta 2
Kpelle__ɓà Looma__gà 2
Looma__bà Bamana__lá 2
Looma__bɛ̀ Bamana__yé 2
Looma__gà Guro__ɓa̰ 2
Looma__gà Kono__à 2
Looma__gà Kpelle__à 2
Looma__gà Kpelle__ɓà 2
Looma__gà Mano__ká 2
Looma__mà Dan_Gweetaa__gɯ́ 2
Looma__mà Guro__ɓa̰ 2
Looma__mà Looma__sù 2
Looma__sù Looma__mà 2
Looma__yà Kono__yêi 2
Looma__yà Kpelle__yêi 2
Looma__yà Mano__kɛ̀lɛ̀ 2
Mano__ká Bamana__lá 2
Mano__ká Dan_Gweetaa__ká 2
Mano__ká Guro__ya̰ 2
Mano__ká Kono__mà 2
Mano__ká Looma__gà 2
Mano__kɛ̀lɛ̀ Looma__yà 2
Mano__lɛ̀ɛ̄ Guro__lɛ 2
Mano__mɔ̀ Dan_Gweetaa__gɯ́ 2
Mano__mɔ̀ Dan_Gweetaa__ká 2
Mano__mɔ̀ Guro__lɛ 2
Mano__mɔ̀ Guro__ta 2
Mano__píé Bamana__fɛ̀ 2
Mano__píé Guro__và 2
Mano__píé Kpelle__púlû 2
Mano__píé Kpelle__pɔ́ 2
Mano__píé Mano__ŋwɛ́ŋ̀ 2
Mano__ŋwɛ́ŋ̀ Mano__píé 2
Bamana__bólo Bamana__fɛ̀ 1
Bamana__bólo Looma__yà 1
Bamana__bólo Mano__kɛ̀lɛ̀ 1
Bamana__fɛ̀ Bamana__bólo 1
Bamana__fɛ̀ Dan_Gweetaa__pi̋ɤ 1
Bamana__fɛ̀ Guro__và 1
Bamana__fɛ̀ Kono__pɔ̀ 1
Bamana__fɛ̀ Kpelle__pɔ́ 1
Bamana__fɛ̀ Looma__bà 1
Bamana__fɛ̀ Looma__tá 1
Bamana__fɛ̀ Mano__lɛ̀ɛ̄ 1
Bamana__kàn Bamana__kɔ́ 1
Bamana__kàn Bamana__lá 1
Bamana__kàn Bamana__mà 1
Bamana__kàn Bamana__nɔ̀fɛ̀ 1
Bamana__kàn Dan_Gweetaa__kèŋ̏ 1
Bamana__kàn Dan_Gweetaa__tȁ 1
Bamana__kàn Guro__ta 1
Bamana__kàn Guro__zuo 1
Bamana__kàn Kono__mà 1
Bamana__kàn Kpelle__púlû 1
Bamana__kàn Kpelle__ɓà 1
Bamana__kàn Looma__pòlù 1
Bamana__kàn Mano__mɔ̀ 1
Bamana__kɔ́ Bamana__kàn 1
Bamana__kɔ́ Bamana__lá 1
Bamana__kɔ́ Bamana__nɔ̀fɛ̀ 1
Bamana__kɔ́ Dan_Gweetaa__kèŋ̏ 1
Bamana__kɔ́ Kono__mà 1
Bamana__kɔ́ Kono__pòò 1
Bamana__kɔ́ Kpelle__ɓà 1
Bamana__kɔ́ Looma__mà 1
Bamana__kɔ́ Looma__pòlù 1
Bamana__kɔ́ Mano__mɔ̀ 1
Bamana__kɔ́ Mano__píé 1
Bamana__lá Bamana__kàn 1
Bamana__lá Bamana__kɔ́ 1
Bamana__lá Bamana__nɔ̀fɛ̀ 1
Bamana__lá Dan_Gweetaa__bhàa 1
Bamana__lá Dan_Gweetaa__kèŋ̏ 1
Bamana__lá Guro__lɛ 1
Bamana__lá Guro__ta 1
Bamana__lá Guro__ya̰ 1
Bamana__lá Guro__zuo 1
Bamana__lá Kono__mɛ̌i 1
Bamana__lá Kpelle__púlû 1
Bamana__lá Looma__bù 1
Bamana__lá Looma__gà 1
Bamana__lá Looma__pòlù 1
Bamana__lá Mano__bà 1
Bamana__lá Mano__là 1
Bamana__lá Mano__yí 1
Bamana__mà Bamana__kàn 1
Bamana__mà Dan_Gweetaa__tȁ 1
Bamana__mà Guro__ta 1
Bamana__mà Kono__mà 1
Bamana__mà Kpelle__ɓà 1
Bamana__mà Mano__mɔ̀ 1
Bamana__nɔ̀fɛ̀ Bamana__kàn 1
Bamana__nɔ̀fɛ̀ Bamana__kɔ́ 1
Bamana__nɔ̀fɛ̀ Bamana__lá 1
Bamana__nɔ̀fɛ̀ Dan_Gweetaa__bhȁ 1
Bamana__nɔ̀fɛ̀ Dan_Gweetaa__kèŋ̏ 1
Bamana__nɔ̀fɛ̀ Guro__zuo 1
Bamana__nɔ̀fɛ̀ Kono__mà 1
Bamana__nɔ̀fɛ̀ Kpelle__púlû 1
Bamana__nɔ̀fɛ̀ Kpelle__ɓà 1
Bamana__nɔ̀fɛ̀ Looma__bɛ̀ 1
Bamana__nɔ̀fɛ̀ Looma__pòlù 1
Bamana__nɔ̀fɛ̀ Mano__mɔ̀ 1
Bamana__yé Dan_Gweetaa__dhi̋ɤ 1
Bamana__yé Looma__gà 1
Bamana__yé Mano__lɛ̀ɛ̄ 1
Bamana__ɲɛ́ Dan_Gweetaa__gɔ̏ 1
Bamana__ɲɛ́ Guro__leè 1
Bamana__ɲɛ́ Kono__mà 1
Bamana__ɲɛ́ Kpelle__ɓà 1
Bamana__ɲɛ́ Looma__bà 1
Bamana__ɲɛ́ Mano__ká 1
Bamana__ɲɛ́ Mano__lɛ̀ɛ̄ 1
Dan_Gweetaa__bhàa Bamana__lá 1
Dan_Gweetaa__bhàa Kono__hù 1
Dan_Gweetaa__bhàa Kpelle__hù 1
Dan_Gweetaa__bhàa Looma__bù 1
Dan_Gweetaa__bhàa Mano__bà 1
Dan_Gweetaa__bhȁ Bamana__nɔ̀fɛ̀ 1
Dan_Gweetaa__bhȁ Dan_Gweetaa__tȁ 1
Dan_Gweetaa__bhȁ Guro__ya̰ 1
Dan_Gweetaa__bhȁ Guro__zì 1
Dan_Gweetaa__bhȁ Guro__ɓa̰ 1
Dan_Gweetaa__bhȁ Kono__à 1
Dan_Gweetaa__bhȁ Kono__hù 1
Dan_Gweetaa__bhȁ Kpelle__à 1
Dan_Gweetaa__bhȁ Looma__bà 1
Dan_Gweetaa__bhȁ Looma__bɛ̀ 1
Dan_Gweetaa__bhȁ Looma__gà 1
Dan_Gweetaa__bhȁ Looma__mà 1
Dan_Gweetaa__bhȁ Looma__sù 1
Dan_Gweetaa__bhȁ Mano__bà 1
Dan_Gweetaa__dhi̋ɤ Bamana__yé 1
Dan_Gweetaa__dhɛ̏ Mano__lɛ̀ɛ̄ 1
Dan_Gweetaa__gɔ̏ Bamana__ɲɛ́ 1
Dan_Gweetaa__gɔ̏ Kono__mà 1
Dan_Gweetaa__gɔ̏ Kono__yêi 1
Dan_Gweetaa__gɔ̏ Kpelle__yêi 1
Dan_Gweetaa__gɔ̏ Kpelle__ɓà 1
Dan_Gweetaa__gɔ̏ Looma__bà 1
Dan_Gweetaa__gɔ̏ Looma__yà 1
Dan_Gweetaa__gɔ̏ Mano__gɛ̀nɛ̀ 1
Dan_Gweetaa__gɔ̏ Mano__ká 1
Dan_Gweetaa__gɔ̏ Mano__kɛ̀lɛ̀ 1
Dan_Gweetaa__gɔ̏ Mano__lɛ̀ɛ̄ 1
Dan_Gweetaa__gɯ́ Guro__và 1
Dan_Gweetaa__gɯ́ Guro__ɓa̰ 1
Dan_Gweetaa__gɯ́ Looma__sù 1
Dan_Gweetaa__gɯ́ Mano__píé 1
Dan_Gweetaa__gɯ́ Mano__ŋwɛ́ŋ̀ 1
Dan_Gweetaa__ká Dan_Gweetaa__tȁ 1
Dan_Gweetaa__ká Looma__bà 1
Dan_Gweetaa__ká Looma__gà 1
Dan_Gweetaa__ká Looma__tá 1
Dan_Gweetaa__kèŋ̏ Bamana__kàn 1
Dan_Gweetaa__kèŋ̏ Bamana__kɔ́ 1
Dan_Gweetaa__kèŋ̏ Bamana__lá 1
Dan_Gweetaa__kèŋ̏ Bamana__nɔ̀fɛ̀ 1
Dan_Gweetaa__kèŋ̏ Guro__zuo 1
Dan_Gweetaa__kèŋ̏ Kpelle__púlû 1
Dan_Gweetaa__kèŋ̏ Looma__pòlù 1
Dan_Gweetaa__pi̋ɤ Bamana__fɛ̀ 1
Dan_Gweetaa__pi̋ɤ Guro__và 1
Dan_Gweetaa__pi̋ɤ Kono__pɔ̀ 1
Dan_Gweetaa__pi̋ɤ Kpelle__pɔ́ 1
Dan_Gweetaa__pi̋ɤ Mano__píé 1
Dan_Gweetaa__tȁ Bamana__kàn 1
Dan_Gweetaa__tȁ Bamana__mà 1
Dan_Gweetaa__tȁ Dan_Gweetaa__bhȁ 1
Dan_Gweetaa__tȁ Dan_Gweetaa__ká 1
Dan_Gweetaa__tȁ Guro__jì 1
Dan_Gweetaa__tȁ Kono__hù 1
Dan_Gweetaa__tȁ Kono__mà 1
Dan_Gweetaa__tȁ Kpelle__ɓà 1
Dan_Gweetaa__tȁ Looma__mà 1
Dan_Gweetaa__tȁ Mano__mɔ̀ 1
Dan_Gweetaa__zɯ̏ Guro__zì 1
Dan_Gweetaa__zɯ̏ Kono__mà 1
Dan_Gweetaa__zɯ̏ Looma__mà 1
Dan_Gweetaa__zɯ̏ Mano__mɔ̀ 1
Guro__jì Dan_Gweetaa__tȁ 1
Guro__jì Looma__mà 1
Guro__leè Bamana__ɲɛ́ 1
Guro__leè Kono__mà 1
Guro__leè Kono__yêi 1
Guro__leè Kpelle__yêi 1
Guro__leè Kpelle__ɓà 1
Guro__leè Looma__bà 1
Guro__leè Looma__yà 1
Guro__leè Mano__ká 1
Guro__leè Mano__kɛ̀lɛ̀ 1
Guro__leè Mano__lɛ̀ɛ̄ 1
Guro__lɛ Bamana__lá 1
Guro__lɛ Kono__mà 1
Guro__lɛ Kono__mɛ̌i 1
Guro__lɛ Looma__bɛ̀ 1
Guro__lɛ Mano__là 1
Guro__ta Bamana__kàn 1
Guro__ta Bamana__lá 1
Guro__ta Bamana__mà 1
Guro__ta Guro__ɓa̰ 1
Guro__ta Kono__hù 1
Guro__ta Looma__bà 1
Guro__ta Mano__là 1
Guro__và Bamana__fɛ̀ 1
Guro__và Dan_Gweetaa__gɯ́ 1
Guro__và Dan_Gweetaa__pi̋ɤ 1
Guro__và Guro__ya̰ 1
Guro__và Guro__ɓa̰ 1
Guro__và Kono__mà 1
Guro__và Kono__pɔ̀ 1
Guro__và Looma__bà 1
Guro__và Mano__ŋwɛ́ŋ̀ 1
Guro__ya̰ Bamana__lá 1
Guro__ya̰ Dan_Gweetaa__bhȁ 1
Guro__ya̰ Guro__và 1
Guro__ya̰ Looma__gà 1
Guro__ya̰ Looma__tá 1
Guro__ya̰ Mano__mɔ̀ 1
Guro__zì Dan_Gweetaa__bhȁ 1
Guro__zì Dan_Gweetaa__zɯ̏ 1
Guro__zì Kono__mà 1
Guro__zì Looma__mà 1
Guro__zì Mano__mɔ̀ 1
Guro__zuo Bamana__kàn 1
Guro__zuo Bamana__lá 1
Guro__zuo Bamana__nɔ̀fɛ̀ 1
Guro__zuo Dan_Gweetaa__kèŋ̏ 1
Guro__zuo Kono__pòò 1
Guro__zuo Looma__pòlù 1
Guro__zuo Mano__píé 1
Guro__ɓa̰ Dan_Gweetaa__bhȁ 1
Guro__ɓa̰ Dan_Gweetaa__gɯ́ 1
Guro__ɓa̰ Guro__ta 1
Guro__ɓa̰ Guro__và 1
Guro__ɓa̰ Looma__bà 1
Guro__ɓa̰ Looma__kómá 1
Guro__ɓa̰ Mano__bà 1
Guro__ɓa̰ Mano__ká 1
Guro__ɓa̰ Mano__là 1
Guro__ɓa̰ Mano__píé 1
Guro__ɓa̰ Mano__ŋwɛ́ŋ̀ 1
Kono__à Dan_Gweetaa__bhȁ 1
Kono__à Looma__tá 1
Kono__à Mano__mɔ̀ 1
Kono__hù Dan_Gweetaa__bhàa 1
Kono__hù Dan_Gweetaa__bhȁ 1
Kono__hù Dan_Gweetaa__tȁ 1
Kono__hù Guro__ta 1
Kono__hù Looma__bù 1
Kono__hù Looma__mà 1
Kono__hù Mano__bà 1
Kono__hù Mano__ká 1
Kono__hù Mano__yí 1
Kono__lá Kpelle__lá 1
Kono__lá Looma__yà 1
Kono__lá Mano__là 1
Kono__mà Bamana__kàn 1
Kono__mà Bamana__kɔ́ 1
Kono__mà Bamana__mà 1
Kono__mà Bamana__nɔ̀fɛ̀ 1
Kono__mà Bamana__ɲɛ́ 1
Kono__mà Dan_Gweetaa__gɔ̏ 1
Kono__mà Dan_Gweetaa__tȁ 1
Kono__mà Dan_Gweetaa__zɯ̏ 1
Kono__mà Guro__leè 1
Kono__mà Guro__lɛ 1
Kono__mà Guro__và 1
Kono__mà Guro__zì 1
Kono__mà Kpelle__hù 1
Kono__mà Looma__bɛ̀ 1
Kono__mà Looma__gà 1
Kono__mà Mano__bà 1
Kono__mà Mano__lɛ̀ɛ̄ 1
Kono__mà Mano__píé 1
Kono__mà Mano__ŋwɛ́ŋ̀ 1
Kono__mɛ̌i Bamana__lá 1
Kono__mɛ̌i Guro__lɛ 1
Kono__mɛ̌i Kpelle__ɓà 1
Kono__mɛ̌i Mano__là 1
Kono__pòò Bamana__kɔ́ 1
Kono__pòò Guro__zuo 1
Kono__pòò Kpelle__púlû 1
Kono__pòò Mano__píé 1
Kono__pɔ̀ Bamana__fɛ̀ 1
Kono__pɔ̀ Dan_Gweetaa__pi̋ɤ 1
Kono__pɔ̀ Guro__và 1
Kono__pɔ̀ Kpelle__pɔ́ 1
Kono__pɔ̀ Mano__mɔ̀ 1
Kono__pɔ̀ Mano__píé 1
Kono__yêi Dan_Gweetaa__gɔ̏ 1
Kono__yêi Guro__leè 1
Kpelle__à Dan_Gweetaa__bhȁ 1
Kpelle__à Looma__tá 1
Kpelle__à Mano__mɔ̀ 1
Kpelle__hù Dan_Gweetaa__bhàa 1
Kpelle__hù Kono__mà 1
Kpelle__hù Looma__bù 1
Kpelle__hù Looma__mà 1
Kpelle__hù Mano__bà 1
Kpelle__hù Mano__ká 1
Kpelle__hù Mano__yí 1
Kpelle__lá Kono__lá 1
Kpelle__lá Looma__yà 1
Kpelle__lá Mano__là 1
Kpelle__púlû Bamana__kàn 1
Kpelle__púlû Bamana__lá 1
Kpelle__púlû Bamana__nɔ̀fɛ̀ 1
Kpelle__púlû Dan_Gweetaa__kèŋ̏ 1
Kpelle__púlû Kono__pòò 1
Kpelle__púlû Looma__pòlù 1
Kpelle__pɔ́ Bamana__fɛ̀ 1
Kpelle__pɔ́ Dan_Gweetaa__pi̋ɤ 1
Kpelle__pɔ́ Kono__pɔ̀ 1
Kpelle__pɔ́ Looma__mà 1
Kpelle__yêi Dan_Gweetaa__gɔ̏ 1
Kpelle__yêi Guro__leè 1
Kpelle__ɓà Bamana__kàn 1
Kpelle__ɓà Bamana__kɔ́ 1
Kpelle__ɓà Bamana__mà 1
Kpelle__ɓà Bamana__nɔ̀fɛ̀ 1
Kpelle__ɓà Bamana__ɲɛ́ 1
Kpelle__ɓà Dan_Gweetaa__gɔ̏ 1
Kpelle__ɓà Dan_Gweetaa__tȁ 1
Kpelle__ɓà Guro__leè 1
Kpelle__ɓà Kono__mɛ̌i 1
Kpelle__ɓà Looma__bɛ̀ 1
Kpelle__ɓà Mano__bà 1
Kpelle__ɓà Mano__kɛ̀lɛ̀ 1
Kpelle__ɓà Mano__là 1
Kpelle__ɓà Mano__lɛ̀ɛ̄ 1
Kpelle__ɓà Mano__píé 1
Kpelle__ɓà Mano__ŋwɛ́ŋ̀ 1
Looma__bà Bamana__fɛ̀ 1
Looma__bà Bamana__ɲɛ́ 1
Looma__bà Dan_Gweetaa__bhȁ 1
Looma__bà Dan_Gweetaa__gɔ̏ 1
Looma__bà Dan_Gweetaa__ká 1
Looma__bà Guro__leè 1
Looma__bà Guro__ta 1
Looma__bà Guro__và 1
Looma__bà Guro__ɓa̰ 1
Looma__bà Mano__ká 1
Looma__bà Mano__lɛ̀ɛ̄ 1
Looma__bù Bamana__lá 1
Looma__bù Dan_Gweetaa__bhàa 1
Looma__bù Kono__hù 1
Looma__bù Kpelle__hù 1
Looma__bù Mano__bà 1
Looma__bɛ̀ Bamana__nɔ̀fɛ̀ 1
Looma__bɛ̀ Dan_Gweetaa__bhȁ 1
Looma__bɛ̀ Guro__lɛ 1
Looma__bɛ̀ Kono__mà 1
Looma__bɛ̀ Kpelle__ɓà 1
Looma__bɛ̀ Mano__ká 1
Looma__bɛ̀ Mano__mɔ̀ 1
Looma__gà Bamana__lá 1
Looma__gà Bamana__yé 1
Looma__gà Dan_Gweetaa__bhȁ 1
Looma__gà Dan_Gweetaa__ká 1
Looma__gà Guro__ya̰ 1
Looma__gà Kono__mà 1
Looma__gà Mano__bà 1
Looma__kómá Guro__ɓa̰ 1
Looma__mà Bamana__kɔ́ 1
Looma__mà Dan_Gweetaa__bhȁ 1
Looma__mà Dan_Gweetaa__tȁ 1
Looma__mà Dan_Gweetaa__zɯ̏ 1
Looma__mà Guro__jì 1
Looma__mà Guro__zì 1
Looma__mà Kono__hù 1
Looma__mà Kpelle__hù 1
Looma__mà Kpelle__pɔ́ 1
Looma__mà Mano__ká 1
Looma__mà Mano__kɛ̀lɛ̀ 1
Looma__mà Mano__píé 1
Looma__mà Mano__yí 1
Looma__mà Mano__ŋwɛ́ŋ̀ 1
Looma__pòlù Bamana__kàn 1
Looma__pòlù Bamana__kɔ́ 1
Looma__pòlù Bamana__lá 1
Looma__pòlù Bamana__nɔ̀fɛ̀ 1
Looma__pòlù Dan_Gweetaa__kèŋ̏ 1
Looma__pòlù Guro__zuo 1
Looma__pòlù Kpelle__púlû 1
Looma__sù Dan_Gweetaa__bhȁ 1
Looma__sù Dan_Gweetaa__gɯ́ 1
Looma__tá Bamana__fɛ̀ 1
Looma__tá Dan_Gweetaa__ká 1
Looma__tá Guro__ya̰ 1
Looma__tá Kono__à 1
Looma__tá Kpelle__à 1
Looma__tá Mano__ká 1
Looma__tá Mano__lɛ̀ɛ̄ 1
Looma__tá Mano__píé 1
Looma__yà Bamana__bólo 1
Looma__yà Dan_Gweetaa__gɔ̏ 1
Looma__yà Guro__leè 1
Looma__yà Kono__lá 1
Looma__yà Kpelle__lá 1
Looma__yà Mano__là 1
Mano__bà Bamana__lá 1
Mano__bà Dan_Gweetaa__bhàa 1
Mano__bà Dan_Gweetaa__bhȁ 1
Mano__bà Guro__ɓa̰ 1
Mano__bà Kono__hù 1
Mano__bà Kono__mà 1
Mano__bà Kpelle__hù 1
Mano__bà Kpelle__ɓà 1
Mano__bà Looma__bù 1
Mano__bà Looma__gà 1
Mano__gɛ̀nɛ̀ Dan_Gweetaa__gɔ̏ 1
Mano__ká Bamana__ɲɛ́ 1
Mano__ká Dan_Gweetaa__gɔ̏ 1
Mano__ká Guro__leè 1
Mano__ká Guro__ɓa̰ 1
Mano__ká Kono__hù 1
Mano__ká Kpelle__hù 1
Mano__ká Looma__bà 1
Mano__ká Looma__bɛ̀ 1
Mano__ká Looma__mà 1
Mano__ká Looma__tá 1
Mano__ká Mano__kɛ̀lɛ̀ 1
Mano__ká Mano__lɛ̀ɛ̄ 1
Mano__ká Mano__yí 1
Mano__ká Mano__ŋwɛ́ŋ̀ 1
Mano__kɛ̀lɛ̀ Bamana__bólo 1
Mano__kɛ̀lɛ̀ Dan_Gweetaa__gɔ̏ 1
Mano__kɛ̀lɛ̀ Guro__leè 1
Mano__kɛ̀lɛ̀ Kpelle__ɓà 1
Mano__kɛ̀lɛ̀ Looma__mà 1
Mano__kɛ̀lɛ̀ Mano__ká 1
Mano__là Bamana__lá 1
Mano__là Guro__lɛ 1
Mano__là Guro__ta 1
Mano__là Guro__ɓa̰ 1
Mano__là Kono__lá 1
Mano__là Kono__mɛ̌i 1
Mano__là Kpelle__lá 1
Mano__là Kpelle__ɓà 1
Mano__là Looma__yà 1
Mano__lɛ̀ɛ̄ Bamana__fɛ̀ 1
Mano__lɛ̀ɛ̄ Bamana__yé 1
Mano__lɛ̀ɛ̄ Bamana__ɲɛ́ 1
Mano__lɛ̀ɛ̄ Dan_Gweetaa__dhɛ̏ 1
Mano__lɛ̀ɛ̄ Dan_Gweetaa__gɔ̏ 1
Mano__lɛ̀ɛ̄ Guro__leè 1
Mano__lɛ̀ɛ̄ Kono__mà 1
Mano__lɛ̀ɛ̄ Kpelle__ɓà 1
Mano__lɛ̀ɛ̄ Looma__bà 1
Mano__lɛ̀ɛ̄ Looma__tá 1
Mano__lɛ̀ɛ̄ Mano__ká 1
Mano__lɛ̀ɛ̄ Mano__píé 1
Mano__mɔ̀ Bamana__kàn 1
Mano__mɔ̀ Bamana__kɔ́ 1
Mano__mɔ̀ Bamana__mà 1
Mano__mɔ̀ Bamana__nɔ̀fɛ̀ 1
Mano__mɔ̀ Dan_Gweetaa__tȁ 1
Mano__mɔ̀ Dan_Gweetaa__zɯ̏ 1
Mano__mɔ̀ Guro__ya̰ 1
Mano__mɔ̀ Guro__zì 1
Mano__mɔ̀ Kono__à 1
Mano__mɔ̀ Kono__pɔ̀ 1
Mano__mɔ̀ Kpelle__à 1
Mano__mɔ̀ Looma__bɛ̀ 1
Mano__mɔ̀ Mano__píé 1
Mano__mɔ̀ Mano__ŋwɛ́ŋ̀ 1
Mano__píé Bamana__kɔ́ 1
Mano__píé Dan_Gweetaa__gɯ́ 1
Mano__píé Dan_Gweetaa__pi̋ɤ 1
Mano__píé Guro__zuo 1
Mano__píé Guro__ɓa̰ 1
Mano__píé Kono__mà 1
Mano__píé Kono__pòò 1
Mano__píé Kono__pɔ̀ 1
Mano__píé Kpelle__ɓà 1
Mano__píé Looma__mà 1
Mano__píé Looma__tá 1
Mano__píé Mano__lɛ̀ɛ̄ 1
Mano__píé Mano__mɔ̀ 1
Mano__yí Bamana__lá 1
Mano__yí Kono__hù 1
Mano__yí Kpelle__hù 1
Mano__yí Looma__mà 1
Mano__yí Mano__ká 1
Mano__ŋwɛ́ŋ̀ Dan_Gweetaa__gɯ́ 1
Mano__ŋwɛ́ŋ̀ Guro__và 1
Mano__ŋwɛ́ŋ̀ Guro__ɓa̰ 1
Mano__ŋwɛ́ŋ̀ Kono__mà 1
Mano__ŋwɛ́ŋ̀ Kpelle__ɓà 1
Mano__ŋwɛ́ŋ̀ Looma__mà 1
Mano__ŋwɛ́ŋ̀ Mano__ká 1
Mano__ŋwɛ́ŋ̀ Mano__mɔ̀ 1

Я попробовал сделать таблицу, но она получается огромная… Возьмем только примеры, где больше одного:

Code
df |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type),
         !is.na(adposition)) |>  
  group_by(number) |> 
  mutate(adposition = str_c(language, "__", adposition)) |> 
  pairwise_count(adposition, construction_type) |> 
  group_by(item1, item2) |> 
  reframe(n = sum(n)) |> 
  filter(n > 1) |> 
  mutate(item1 = fct_reorder(item1, n, .desc = TRUE),
         item2 = fct_reorder(item2, n, .desc = TRUE)) |> 
  ggplot(aes(item1, item2))+
  geom_tile(aes(fill = n), colour = "white") +
  geom_text(aes(label = n), colour = "white") +
  scale_fill_gradient(low = "tomato", high = "darkred")+
  coord_fixed()+
  labs(x = "", y = "") +
  theme(legend.position = "bottom",
        axis.text.x = element_text(angle = 90, vjust = 0, hjust=1))

Вот так я понял Машину идеи про то, как посмотреть соответствия между языками, берите лупу:

Code
df |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type),
         !is.na(adposition)) |>  
  group_by(number) |> 
  mutate(adposition = str_c(language, "__", adposition)) |> 
  pairwise_count(adposition, construction_type) |> 
  group_by(item1, item2) |> 
  reframe(n = sum(n)) |> 
  filter(n > 1) |> 
  separate(item1, into = c("language1", "adposition1"), sep = "__") |> 
  separate(item2, into = c("language2", "adposition2"), sep = "__") |> 
  group_by(language1, language2, adposition1) |> 
  reframe(ratio = n/sum(n),
            n = n,
            adposition2 = adposition2) |> 
  distinct() |> 
  mutate(language1 = str_replace(language1, "_", " "),
         language1 = factor(language1, levels = c("Guro", "Dan Gweetaa", "Mano", "Kpelle", "Kono", "Looma", "Bamana")),
         language2 = str_replace(language2, "_", " "),
         language2 = factor(language2, levels = c("Guro", "Dan Gweetaa", "Mano", "Kpelle", "Kono", "Looma", "Bamana"))) |> 
  ggplot(aes(ratio, adposition1, label = str_c(adposition2, "\n",
                                               round(ratio*100), "% (",
                                               n, ")")))+
  geom_col(color = "white")+
  geom_label(position = position_stack(vjust = .5), size = 2)+
  facet_grid(language1~language2, scales = "free")+
  labs(y = "")

Все этимологии:

Code
et <- readxl::read_xlsx("../GM_merged_wide_verb_VV2.xlsx")
et |> 
  select(number, predicate_eng, stimuli, ends_with("etym")) |> 
  pivot_longer(names_to = "source", 
               values_to = "value", 
               ends_with("etym")) |> 
  na.omit() |> 
  filter(value != "0") |> 
  distinct() |> 
  mutate(value = str_replace_all(value, "able, be", "able||| be"),
         value = str_replace_all(value, "bear, give", "bear||| give"),
         value = str_replace_all(value, ", shut", "||| shut"),
         value = str_replace_all(value, "cry, weep", "cry||| weep"),
         value = str_replace_all(value, "shoot, sting", "shoot||| sting"),
         value = str_replace_all(value, "stuck, get", "stuck||| get"),
         value = str_replace_all(value, ",", ";"),
         value = str_replace_all(value, "\\|\\|\\|", ","),
         value = str_split(value, ";")) |> 
  unnest_longer(value) |> 
  distinct() |> 
  mutate(value2 = 1) |>  
  pivot_wider(names_from = source, values_from = value2, values_fill = 0) |> 
  select(ends_with("etym")) |> 
  rename(Guro = Guro_etym,
         Looma = Looma_etym,
         Mano = Mano_etym,
         Kono = Kono_etym,
         Dan_Gweetaa = Dan_etym,
         Bamana = Bamana_etym,
         Kpelle = Kpelle_etym) |> 
  t() |> 
  dist(method = "binary") ->
  etym

etym |> 
  hclust() |> 
  as.phylo()  %>%
  plot(main = "Verb etimology (all stimuli)",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5, 
       font = 2)

Code
etym  |> 
  neighborNet() |> 
  plot()
title(main = "Verb etimology (all stimuli)")

Кластеризация со случайным эквивалентом. Я запустил более 10 раз – ничего в структуре не поменялось, только длина ножек менялась.

Code
et |> 
  select(number, predicate_eng, stimuli, ends_with("etym")) |> 
  pivot_longer(names_to = "source", 
               values_to = "value", 
               ends_with("etym")) |> 
  na.omit() |> 
  filter(value != "0") |> 
  distinct() |> 
  mutate(value = str_replace_all(value, "able, be", "able||| be"),
         value = str_replace_all(value, "bear, give", "bear||| give"),
         value = str_replace_all(value, ", shut", "||| shut"),
         value = str_replace_all(value, "cry, weep", "cry||| weep"),
         value = str_replace_all(value, "shoot, sting", "shoot||| sting"),
         value = str_replace_all(value, "stuck, get", "stuck||| get"),
         value = str_replace_all(value, ",", ";"),
         value = str_replace_all(value, "\\|\\|\\|", ","),
         value = str_split(value, ";")) |> 
  unnest_longer(value) |> 
  distinct() |> 
  mutate(value2 = 1) |> 
  group_by(number, source) |> 
  sample_n(size = 1) |> 
  ungroup() |> 
  mutate(value2 = 1) |>  
  pivot_wider(names_from = source, values_from = value2, values_fill = 0) |> 
  select(ends_with("etym")) |> 
  rename(Guro = Guro_etym,
         Looma = Looma_etym,
         Kono = Kono_etym,
         Mano = Mano_etym,
         Dan_Gweetaa = Dan_etym,
         Bamana = Bamana_etym,
         Kpelle = Kpelle_etym) |> 
  t() |> 
  dist(method = "binary") ->
  etym_random

etym_random |> 
  hclust() |> 
  as.phylo()  %>%
  plot(main = "Verb etimology with random equivalents",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5, 
       font = 2)

Code
etym_random  |> 
  neighborNet() |> 
  plot()
title(main = "Verb etimology with random equivalents")

Это сделано по следующей таблице:

Code
et |> 
  select(number, predicate_eng, ends_with("etym")) |> 
  pivot_longer(names_to = "source", 
               values_to = "value", 
               ends_with("etym")) |> 
  na.omit() |> 
  filter(value != "0") |> 
  distinct() |> 
  mutate(value = str_replace_all(value, "able, be", "able||| be"),
         value = str_replace_all(value, "bear, give", "bear||| give"),
         value = str_replace_all(value, ", shut", "||| shut"),
         value = str_replace_all(value, "cry, weep", "cry||| weep"),
         value = str_replace_all(value, "shoot, sting", "shoot||| sting"),
         value = str_replace_all(value, "stuck, get", "stuck||| get"),
         value = str_replace_all(value, ",", ";"),
         value = str_replace_all(value, "\\|\\|\\|", ","),
         value = str_split(value, ";")) |> 
  unnest_longer(value) |> 
  distinct() |> 
  mutate(value2 = value) |> 
  pivot_wider(names_from = source, values_from = value2) |>
  arrange(number, predicate_eng, value) |> 
  select(-value)
number predicate_eng Guro_etym Looma_etym Mano_etym Dan_etym Bamana_etym Kpelle_etym Kono_etym
1 hurt NA NA NA break (to)-2-wi NA NA NA
1 hurt NA NA NA do-1-ke NA NA NA
1 hurt NA NA NA go out (to)-bo NA NA NA
1 hurt NA hurt-xona NA NA NA hurt-xona hurt-xona
1 hurt illness-1-jankaro NA NA NA NA NA NA
1 hurt NA NA NA NA pain-1-dimi NA NA
1 hurt NA NA sufferance-4-waa NA NA NA NA
1 hurt NA NA NA turn-pene NA NA NA
2 be sick with NA NA NA NA catch-2-miita NA NA
2 be sick with NA NA NA do-1-ke NA NA NA
3 be afraid of NA NA NA NA NA 0fear-nyow 0fear-nyow
3 be afraid of NA NA NA fear-1-g’ila fear-1-g’ila NA NA
3 be afraid of NA fear-3-duwa fear-3-duwa NA NA NA NA
4 throw throw-1 (to)-fili throw-1 (to)-fili NA NA throw-1 (to)-fili throw-1 (to)-fili throw-1 (to)-fili
4 throw NA NA throw-2 (to)-zu throw-2 (to)-zu NA NA NA
5 be sufficient to NA NA NA catch-3-catch NA NA NA
5 be sufficient to NA NA NA NA go out (to)-bo NA NA
6 be like sb go out (to)-bo NA go out (to)-bo go out (to)-bo go out (to)-bo NA NA
6 be like sb NA knock down-kula NA NA NA knock down-kula knock down-kula
7 have trust NA NA confidence-dannaya NA NA NA NA
7 have trust NA NA NA go out (to)-bo NA NA NA
7 have trust NA lie down-1-d’a NA NA lie down-1-d’a lie down-1-d’a lie down-1-d’a
7 have trust send-2-bo NA NA NA NA NA NA
7 have trust NA NA stand (to)-1-d’o stand (to)-1-d’o NA stand (to)-1-d’o NA
8 take take-2-si NA take-2-si take-2-si NA NA NA
8 take NA NA NA NA take-3-ta NA NA
8 take NA take-5-sige NA NA NA take-5-sige take-5-sige
9 see what NA NA look-2 (to)-ga NA NA NA NA
9 see what NA NA NA see (to)-1-ye see (to)-1-ye NA NA
9 see what NA see (to)-3-ka NA NA NA NA NA
10 influence NA NA NA NA press-1 (to)-digi NA NA
10 influence put-2-kpa NA NA NA NA NA NA
11 meet NA NA go out (to)-bo NA NA NA NA
11 meet NA NA NA NA meet-ben NA NA
11 meet see (to)-1-ye NA NA see (to)-1-ye see (to)-1-ye NA NA
11 meet NA see (to)-3-ka NA NA NA NA NA
12 enter send-2-bo NA NA NA NA NA NA
12 enter NA NA throw-2 (to)-zu NA NA NA NA
12 enter NA NA NA NA NA enter (to)-1 enter (to)-1
12 enter NA enter (to)-1-so NA NA NA NA NA
12 enter NA NA NA NA enter (to)-2-DZON NA NA
12 enter enter (to)-3-wola NA enter (to)-3-wola NA NA NA NA
12 enter NA NA NA lie down-1-d’a NA NA NA
13 win NA NA NA able, be-1-mo NA NA NA
13 win NA NA NA NA beat-1-bugo NA NA
13 win NA NA NA do-1-ke NA NA NA
13 win NA NA prepare (to)-baa NA NA NA NA
13 win NA NA NA NA receive-sodon NA NA
13 win NA NA NA NA NA rise (to)-1-te NA
13 win NA NA NA take-2-si NA NA NA
14 leave NA NA NA NA NA take-5-sige NA
14 leave NA NA NA go away (to)-go NA NA NA
14 leave go out (to)-bo NA go out (to)-bo NA go out (to)-bo NA NA
14 leave NA knock down-kula NA NA NA knock down-kula knock down-kula
15 chase NA chase (to)-kpe NA NA chase (to)-kpe NA NA
15 chase NA NA come-3-nu NA NA NA NA
15 chase NA NA NA NA NA go (to)-1-di go (to)-1-di
15 chase go away (to)-go NA NA NA NA NA NA
16 bend NA NA bend-4-kula NA NA NA NA
16 bend NA NA NA NA bend-1-bidin NA NA
16 bend NA bend-3-kpilin bend-3-kpilin NA NA bend-3-kpilin bend-3-kpilin
16 bend NA NA NA bend-4-kula NA NA NA
17 say say-1-fo NA NA say-1-fo say-1-fo NA NA
17 say NA NA say-5-gee NA NA NA NA
17 say NA say-6-yee NA NA NA say-6-yee say-6-yee
18 hold NA NA NA catch-3-kun NA NA NA
18 hold NA catch-4-song NA NA NA NA NA
18 hold NA NA NA NA hold-mara NA NA
19 catch NA NA catch-3-kun catch-3-kun catch-3-kun NA NA
19 catch NA catch-4-song NA NA NA catch-4-song catch-4-song
19 catch stand (to)-1-do NA NA NA NA NA NA
20 to milk NA knock down-kula NA NA NA knock down-kula knock down-kula
20 to milk NA NA NA NA milk (to)-bidi NA NA
20 to milk take-2-si NA NA NA NA NA NA
21 reach NA NA NA NA arrive-1-k’e NA NA
21 reach NA NA NA NA NA arrive-4-kite arrive-4-kite
21 reach go out (to)-bo NA go out (to)-bo NA NA go out (to)-bo NA
22 touch NA NA 0 NA NA NA NA
22 touch NA touch (to)-4-tungbong NA NA NA touch (to)-4-tungbong NA
22 touch NA 0 NA NA NA NA NA
22 touch NA NA NA NA NA sit (to)-1-sigi NA
22 touch NA NA NA NA touch (to)-1-maga NA NA
22 touch NA NA touch (to)-2-pa touch (to)-2-pa NA NA NA
22 touch NA NA NA NA NA touch (to)-4-tungbong touch (to)-4-tungbong
23 fight sb NA do-4-goon do-4-goon do-4-goon NA do-4-goon NA
23 fight sb measure (to)-2-dan NA NA NA NA NA NA
23 fight sb NA NA NA NA war-1-kele NA NA
24 be friends with NA NA do-1-ke NA NA NA NA
24 be friends with NA NA lie down-1-d’a NA NA NA NA
25 think about sb NA NA come-3-nu NA NA NA NA
25 think about sb NA NA NA do-1-ke NA NA NA
25 think about sb NA NA NA NA think (to)-1-miira NA NA
25 think about sb NA walk-1-sigan NA NA NA walk-1-sigan walk-1-sigan
25 think about sb NA NA walk-3-taga NA NA NA NA
26 eat NA drink (to)-1-min NA NA NA drink (to)-1-min drink (to)-1-min
26 eat NA NA NA NA eat (to)-1-don/domu NA NA
26 eat eat (to)-2-bele NA eat (to)-2-bele eat (to)-2-bele NA NA NA
27 fry NA fry (to)-geran fry (to)-geran fry (to)-geran fry (to)-geran fry (to)-geran fry (to)-geran
28 wait NA NA help-2-kpong NA NA NA NA
28 wait NA NA NA remain-to NA NA NA
28 wait NA NA stand (to)-1-d’o stand (to)-1-d’o NA NA NA
28 wait NA NA NA NA wait-1-kono NA NA
28 wait wait-2-gben wait-2-gben NA NA NA wait-2-gben wait-2-gben
29 forget NA NA forget-2-nemu NA NA NA NA
29 forget NA NA forget-1-nyina NA forget-1-nyina NA NA
29 forget NA forget-2-nemu NA NA NA forget-2-nemu forget-2-nemu
29 forget NA NA NA go out (to)-bo NA NA NA
29 forget loose (to)-1-sama NA NA NA NA NA NA
30 depend on take-2-si NA NA take-2-si NA NA NA
31 call NA NA NA NA call-2-wele NA NA
31 call call-3-dhee NA NA call-3-dhee NA NA NA
31 call NA call-5-toli NA NA NA call-5-toli call-5-toli
31 call NA NA do-1-ke NA NA NA NA
32 meet, faire connaissance know (to)-1-d’on NA know (to)-1-d’on know (to)-1-d’on know (to)-1-d’on NA NA
32 meet, faire connaissance NA know (to)-2-kolon NA NA NA know (to)-2-kolon know (to)-2-kolon
33 know someone know (to)-1-d’on NA know (to)-1-d’on know (to)-1-d’on know (to)-1-d’on NA NA
33 know someone NA know (to)-2-kolon NA NA NA know (to)-2-kolon know (to)-2-kolon
34 play NA NA blow-1-fe NA NA blow-1-fe NA
34 play NA NA kill-2-je NA NA NA NA
34 play NA NA NA NA NA forge (to)-2-galin forge (to)-2-galin
34 play kill-2-je NA NA kill-2-je NA NA NA
34 play NA NA NA NA say-1-fo NA NA
34 play NA NA strike-2-ma NA NA NA NA
35 avoid NA NA NA NA NA go out (to)-bo NA
35 avoid NA lie down-1-d’a NA NA NA lie down-1-d’a NA
35 avoid put-2-kpa NA NA NA NA NA NA
35 avoid NA NA spread (to)-2-kpo spread (to)-2-kpo NA NA NA
36 fabricate NA NA NA NA NA 0 NA
36 fabricate do-1-ke NA do-1-ke do-1-ke NA NA NA
36 fabricate NA make-kpeteng NA NA NA make-kpeteng NA
36 fabricate NA NA prepare (to)-baa NA NA NA NA
36 fabricate NA NA NA NA weave (to)-1-dan NA NA
37 mock NA NA NA stand (to)-1-d’o NA NA NA
37 mock NA NA NA tear (to)-pera NA NA NA
37 mock NA NA NA NA go out (to)-bo NA NA
37 mock NA knock down-kula NA NA NA NA NA
37 mock NA NA NA NA laugh-1-jele laugh-1-jele laugh-1-jele
37 mock NA NA NA stand (to)-1-d’o NA NA NA
39 seek NA NA spread (to)-2-kpo NA NA NA NA
39 seek NA NA NA NA search-1-nyini NA NA
39 seek search-3-gini NA NA NA NA NA NA
39 seek NA NA NA NA NA search-4-koli NA
39 seek NA walk-1-sigan NA NA NA NA NA
39 seek NA NA walk-3-taga NA NA NA NA
40 paint NA NA NA NA draw (a picture)-nyege NA NA
40 paint pass-2-gile NA NA NA NA NA NA
40 paint NA NA NA NA NA rise (to)-1-te NA
40 paint NA NA NA whiten-fele NA NA NA
40 paint NA NA write-2-been NA NA NA NA
41 bite NA bite (to)-kin NA NA bite (to)-kin bite (to)-kin bite (to)-kin
41 bite NA NA NA catch-3-kun NA NA NA
41 bite stand (to)-1-d’o NA stand (to)-1-d’o NA NA NA NA
42 be deprived fall (to)-2-dia NA NA NA NA NA NA
42 be deprived NA NA fail-5-kon NA NA NA NA
42 be deprived NA NA NA NA NA fail-6-fenge fail-6-fenge
42 be deprived NA NA forget-1-nyina NA NA NA NA
42 be deprived loose (to)-1-sama NA NA NA NA NA NA
42 be deprived NA NA NA NA misfortune-1-bono NA NA
43 catch NA chase (to)-kpe NA NA NA NA NA
43 catch NA NA NA NA catch-2-miita NA NA
43 catch catch-3-kun NA catch-3-kun catch-3-kun NA NA NA
43 catch NA catch-4-song NA NA NA catch-4-song catch-4-song
44 break NA NA break (to)-1-gali NA NA NA NA
44 break break (to)-1-gali break (to)-1-gali NA break (to)-1-gali break (to)-1-gali break (to)-1-gali break (to)-1-gali
44 break NA NA break (to)-2-wi NA NA NA NA
45 flatter NA NA NA do-1-ke NA NA NA
45 flatter NA NA rise (to)-1-te NA NA rise (to)-1-te rise (to)-1-te
46 love NA NA do-1-ke NA NA NA NA
46 love NA NA go out (to)-bo NA NA NA NA
46 love NA NA do-1-ke do-1-ke NA NA NA
46 love go out (to)-bo NA NA NA NA NA NA
46 love NA NA NA NA love-xani NA NA
47 wave NA NA go out (to)-bo NA NA NA NA
47 wave NA NA NA NA shake-6-yuguyugu NA NA
48 dream NA NA NA NA NA go out (to)-bo go out (to)-bo
48 dream NA NA kill-2-je NA NA NA NA
49 wash NA NA wash-1-poli NA NA NA NA
49 wash wash-2-zulu NA NA wash-2-zulu NA NA NA
49 wash NA wash-3-ko NA NA wash-3-ko wash-3-ko wash-3-ko
50 put on do-5-wo NA NA NA NA NA NA
50 put on NA enter (to)-1-so NA NA NA enter (to)-1-so NA
50 put on NA NA NA NA enter (to)-2-dzon NA NA
50 put on NA NA NA lie down-1-d’a NA NA NA
50 put on NA NA NA NA NA NA pour-2 (to)-pu
51 call smth call-3-dhee NA NA call-3-dhee NA NA NA
51 call smth NA NA NA do-1-ke NA NA NA
51 call smth NA NA say-5-gee NA NA NA NA
51 call smth NA NA NA NA speak-1-xo NA NA
52 punish NA lie down-1-d’a NA NA NA NA NA
52 punish NA NA NA lie down-3-wo NA NA NA
52 punish NA NA NA NA punish-nyangi NA NA
52 punish stand (to)-1-d’o NA NA NA NA NA NA
53 attack NA NA NA NA lie down-1-d’a NA NA
53 attack NA NA NA NA venom-baga NA NA
53 attack NA NA NA NA NA break (to)-3-golo break (to)-3-golo
53 attack NA catch-4-song NA NA NA NA NA
53 attack NA NA NA NA fall (to)-1-bele NA NA
53 attack NA NA NA fall (to)-3-pele NA NA NA
53 attack NA NA NA NA rush-3-gbidi NA NA
53 attack NA NA sit (to)-2-yaga NA NA NA NA
53 attack venom-baga NA NA NA NA NA NA
54 be filled with smth fill (to)-1-pa fill (to)-1-pa fill (to)-1-pa fill (to)-1-pa fill (to)-1-pa fill (to)-1-pa NA
55 find smth NA NA NA see (to)-1-ye see (to)-1-ye NA NA
55 find smth NA see (to)-3-ka NA NA NA see (to)-3-ka see (to)-3-ka
57 hate, detest boil-3-fili NA NA NA NA NA NA
57 hate, detest NA NA NA do-1-ke NA NA NA
57 hate, detest NA NA NA NA NA end-6-kpe NA
57 hate, detest NA NA NA NA hate-xoni NA NA
57 hate, detest NA take-5-sige NA NA NA NA NA
58 like NA NA lie down-1-d’a NA NA NA NA
58 like NA NA catch-3-kun NA NA NA NA
58 like NA NA NA NA NA catch-4-song NA
58 like NA NA NA do-1-ke NA NA NA
58 like NA NA NA NA good-2 NA NA
58 like NA NA good-2-di NA NA NA NA
58 like please (to)-so NA NA NA NA NA NA
58 like NA tasty-nene NA NA NA NA NA
59 need NA NA NA catch-3-kun NA NA NA
60 surround NA NA NA NA encircle-2-kooli NA NA
60 surround NA NA NA NA encircle-1-minin NA NA
60 surround NA NA NA encircle-2-kooli NA NA NA
60 surround round-1-dhidhi NA round-1-dhidhi NA NA NA NA
60 surround NA NA NA NA NA round-3-tintan round-3-tintan
60 surround NA round-4-kanka NA NA NA NA NA
61 be left end-2-bo NA NA NA NA NA NA
61 be left NA NA NA NA NA leave (go away)-1-dho leave (go away)-1-dho
61 be left NA NA remain-to NA remain-to NA NA
62 respond NA NA go out (to)-bo NA NA NA NA
62 respond NA NA round-1-dhidhi NA NA NA NA
62 respond NA NA NA NA NA transform-ponden NA
62 respond NA NA agree-3-son NA NA NA NA
62 respond NA NA NA NA answer-1-jabi NA NA
62 respond NA NA NA go out (to)-bo NA NA NA
62 respond NA transform-ponden NA NA NA transform-ponden NA
63 open NA NA go out (to)-bo NA NA go out (to)-bo go out (to)-bo
63 open NA NA NA open-1-polo NA NA NA
63 open NA NA NA NA open-2-yele NA NA
63 open NA stand (to)-1-d’o NA NA NA NA NA
64 be different NA NA NA fall (to)-4-to NA NA NA
64 be different NA NA NA NA go out (to)-bo NA NA
64 be different NA NA NA NA NA NA knock down-kula
64 be different take-2-si NA NA NA NA NA NA
65 fall behind end-2-bo NA NA NA NA NA NA
65 fall behind NA NA NA NA NA leave (go away)-1-dho leave (go away)-1-dho
65 fall behind NA NA remain-to NA remain-to NA NA
66 plow NA NA NA do-1-ke NA NA do-1-ke
66 plow NA NA NA NA farm-sene NA NA
66 plow NA NA NA NA NA plant (to)-1-sing NA
66 plow put-2-kpa NA NA NA NA NA NA
67 smell stand (to)-1-d’o NA NA NA NA NA NA
68 traverse, cross NA NA cut-1 (to)-kan cut-1 (to)-kan NA NA NA
68 traverse, cross cut-3 (to)-kini NA NA NA NA NA NA
68 traverse, cross NA NA NA NA cut-4 (to)-tige NA NA
68 traverse, cross NA cut-8 (to)-tebe NA NA NA cut-8 (to)-tebe cut-8 (to)-tebe
68 traverse, cross NA NA spread (to)-2-kpo NA NA NA NA
69 sing NA fall (to)-4-to fall (to)-4-to fall (to)-4-to NA fall (to)-4-to fall (to)-4-to
69 sing NA NA NA NA lie down-1-d’a NA NA
69 sing send-2-bo NA NA NA NA NA NA
70 write NA mark-ponyang NA NA NA NA NA
70 write NA do-1-ke NA NA NA NA NA
70 write kill-2-je NA NA kill-2-je NA NA NA
70 write NA NA mark-ponyang NA NA mark-ponyang mark-ponyang
70 write NA NA NA NA write-safe NA NA
71 drink drink (to)-1-min NA drink (to)-1-min drink (to)-1-min drink (to)-1-min NA NA
71 drink NA drink (to)-2-kpole NA NA NA drink (to)-2-kpole drink (to)-2-kpole
72 melt NA NA NA NA NA melt-2-senge NA
72 melt NA NA NA NA melt-1-yeelen NA NA
72 melt NA NA melt-2-senge melt-2-senge NA NA melt-2-senge
72 melt NA NA NA NA NA pour-2 (to)-pu NA
73 approach NA NA NA able, be-1-mo NA NA NA
73 approach catch-4-song NA NA NA NA catch-4-song NA
73 approach NA NA go (to)-2-dho NA NA NA NA
73 approach NA NA NA NA meet-ben NA NA
74 leave NA NA go away (to)-go NA NA NA NA
74 leave NA NA NA go away (to)-go NA NA NA
74 leave NA NA NA NA go out (to)-bo NA NA
74 leave NA NA rise (to)-2-wili NA NA NA NA
74 leave take-2-si NA NA NA NA NA NA
74 leave NA take-5-sige NA NA NA take-5-sige take-5-sige
75 75) cover gather-1-dhen NA NA NA NA NA NA
75 75) cover bend-2-bugun NA NA NA NA NA NA
75 75) cover NA NA NA NA close-1 (to), shut (to)-tugu NA NA
75 75) cover close-2 (to), shut (to)-tan NA NA NA NA NA NA
75 75) cover NA NA NA NA NA close-3 (to), shut (to)-kporu NA
75 75) cover fructify-ba NA NA NA NA NA NA
75 75) cover NA NA NA NA NA NA lie down-1-d’a
75 75) cover NA NA lie down-4-kpaa lie down-4-kpaa NA NA NA
76 76) remember NA NA come-3-nu NA NA NA NA
76 76) remember NA NA NA NA descend-1-jigi NA NA
76 76) remember NA NA lie down-1-d’a NA NA NA NA
76 76) remember stand (to)-1-d’o NA NA NA NA NA NA
76 76) remember NA NA take-2-si NA NA NA NA
76 76) remember NA NA wake up-2-buo wake up-2-buo NA NA NA
76 76) remember NA walk-1-sigan NA NA NA NA walk-1-sigan
77 77) help NA NA NA catch-3-kun NA NA NA
77 77) help go out (to)-bo NA NA NA NA NA NA
77 77) help NA NA NA NA help-1-deemaa NA NA
77 77) help NA help-2-kpong help-2-kpong NA NA help-2-kpong NA
77 77) help NA NA NA NA NA NA pass-3-tanbi
78 78) understand hear (to)-moli hear (to)-moli hear (to)-moli hear (to)-moli NA hear (to)-moli hear (to)-moli
78 78) understand NA NA NA NA understand-fa’amu NA NA
79 79) fall into descend-1-jigi NA NA NA descend-1-jigi NA NA
79 79) fall into NA fall (to)-4-to NA NA NA fall (to)-4-to fall (to)-4-to
79 79) fall into NA NA lie down-1-d’a lie down-1-d’a NA NA NA
80 80) cut with NA NA NA cut-1 (to)-kan NA NA NA
80 80) cut with NA NA NA NA cut-4 (to)-tige NA NA
80 80) cut with NA cut-5 (to)-sege NA NA NA NA NA
80 80) cut with NA NA NA NA NA cut-8 (to)-tebe cut-8 (to)-tebe
80 80) cut with wound-4-tugo NA NA NA NA NA NA
81 81) stick to smth NA NA NA fasten-nodo fasten-nodo NA NA
81 81) stick to smth NA stuck, get (to)-kpatang NA NA NA stuck, get (to)-kpatang stuck, get (to)-kpatang
82 82) lose to smb NA NA prepare (to)-baa NA NA NA NA
83 83) be happy about, se rejouir de NA NA NA catch-3-kun NA NA NA
83 83) be happy about, se rejouir de NA NA NA do-1-ke NA NA NA
83 83) be happy about, se rejouir de NA NA NA NA good-2 NA NA
83 83) be happy about, se rejouir de NA NA good-2-di NA NA NA NA
83 83) be happy about, se rejouir de NA tasty-nene NA NA NA tasty-nene tasty-nene
84 84) speak with NA NA NA NA NA do-1-ke NA
84 84) speak with NA NA NA NA NA fall (to)-4-to NA
84 84) speak with NA NA NA NA NA NA fall (to)-4-to
84 84) speak with NA NA go out (to)-bo NA NA go out (to)-bo NA
84 84) speak with NA NA NA kill-2-je NA NA NA
84 84) speak with NA NA speak-3-we NA NA NA NA
84 84) speak with NA NA stand (to)-1-d’o NA NA NA NA
84 84) speak with NA NA NA NA talk-1-bado NA NA
85 85) give birth to NA NA NA NA bear, give birth-1-banki NA NA
85 85) give birth to NA NA save-2-dha NA NA NA NA
85 85) give birth to bear, give birth-3-yaa NA bear, give birth-3-yaa NA NA NA NA
85 85) give birth to NA NA NA NA bear, give birth-5 NA NA
85 85) give birth to NA NA NA NA NA descend-1-jigi descend-1-jigi
85 85) give birth to NA receive-sodon NA NA NA NA NA
85 85) give birth to NA NA NA NA NA see (to)-3-ka NA
85 85) give birth to NA NA NA spread (to)-2-kpo NA NA NA
86 86) let fall smth NA NA NA NA fall (to)-1-bele NA NA
86 86) let fall smth fall (to)-2-dia NA NA NA NA NA NA
86 86) let fall smth NA fall (to)-4-to NA NA NA fall (to)-4-to fall (to)-4-to
86 86) let fall smth NA NA NA NA go out (to)-bo NA NA
86 86) let fall smth NA NA lie down-1-d’a NA NA NA NA
87 87) diriger, gouverner NA NA take-2-si NA NA NA NA
87 87) diriger, gouverner NA NA NA NA NA go out (to)-bo NA
87 87) diriger, gouverner NA NA say-5-gee NA NA NA NA
88 88) miss NA NA catch-3-kun NA NA NA NA
88 88) miss NA NA NA NA NA catch-4-song catch-4-song
89 89) follow go away (to)-go NA NA NA NA NA NA
89 89) follow NA NA NA pass-2-gile NA NA NA
89 89) follow NA put-1-bila NA NA NA put-1-bila NA
90 90) climb down NA NA NA NA NA put-1-bila NA
90 90) climb down descend-1-jigi NA NA NA descend-1-jigi descend-1-jigi NA
90 90) climb down NA NA descend-2-yolo descend-2-yolo NA NA NA
90 90) climb down NA knock down-kula NA NA NA NA NA
90 90) climb down NA NA NA NA NA NA put-1-bila
91 91) listen to smth hear (to)-moli NA NA NA hear (to)-moli hear (to)-moli NA
91 91) listen to smth NA NA NA remain-to NA NA NA
91 91) listen to smth NA stand (to)-1-d’o stand (to)-1-d’o NA stand (to)-1-d’o stand (to)-1-d’o stand (to)-1-d’o
92 92) listen to smb go out (to)-bo NA NA NA NA NA NA
92 92) listen to smb NA obey-kolo NA NA obey-kolo NA NA
92 92) listen to smb NA NA NA sit (to)-2-yaga NA NA NA
92 92) listen to smb NA NA spread (to)-2-kpo NA NA NA NA
93 93) hear hear (to)-moli hear (to)-moli hear (to)-moli hear (to)-moli hear (to)-moli hear (to)-moli hear (to)-moli
93 93) hear NA stand (to)-1-d’o NA NA NA NA NA
94 94) mix up with smth NA NA NA NA mix-4-nyaxami NA NA
94 94) mix up with smth NA mix-6-sunpu NA NA NA mix-6-sunpu NA
95 95) look at NA NA end-3-nyia NA NA NA NA
95 95) look at NA NA NA NA look-1 (to)-felen NA NA
95 95) look at NA NA look-2 (to)-ga look-2 (to)-ga NA NA NA
95 95) look at NA NA NA NA NA look-4 (to)-kpele NA
95 95) look at search-3-gini NA NA NA NA NA NA
95 95) look at NA NA NA NA NA see (to)-3-ka see (to)-3-ka
96 96) take off NA NA go out (to)-bo go out (to)-bo go out (to)-bo NA go out (to)-bo
96 96) take off NA knock down-kula NA NA NA knock down-kula NA
97 97) appear in a dream NA NA NA NA dream-1-k’uyi NA NA
97 97) appear in a dream NA NA NA go out (to)-bo NA go out (to)-bo go out (to)-bo
97 97) appear in a dream NA NA kill-2-je NA NA NA NA
98 98) agree NA NA lie down-1-d’a NA NA NA NA
98 98) agree NA NA 0 NA NA NA NA
98 98) agree NA NA NA NA agree-3-son NA NA
98 98) agree NA lie down-1-d’a NA NA NA NA NA
98 98) agree NA NA NA speak-3-we NA NA NA
98 98) agree NA NA stand (to)-1-d’o NA NA NA NA
98 98) agree NA NA NA NA NA tasty-nene NA
99 99) dispute NA NA do-1-ke NA NA NA NA
99 99) dispute NA NA NA NA NA do-1-ke do-1-ke
99 99) dispute NA noise-1-sonxo NA NA NA NA NA
99 99) dispute NA NA stand (to)-1-d’o NA NA NA NA
99 99) dispute NA NA NA NA war-1-kele NA NA
101 101) shoot at NA NA NA NA destroy (to)-1-te NA NA
101 101) shoot at NA NA lie down-1-d’a lie down-1-d’a NA NA NA
101 101) shoot at NA NA NA NA shoot, sting (to)-bon NA NA
101 101) shoot at NA stand (to)-1-to NA NA NA stand (to)-1-to NA
101 101) shoot at throw-1 (to)-fili NA NA NA NA NA NA
102 102) pour (dry product) NA NA NA do-1-ke do-1-ke NA NA
102 102) pour (dry product) NA NA NA NA NA NA go out (to)-bo
102 102) pour (dry product) NA pour-2 (to)-pu NA NA NA pour-2 (to)-pu NA
103 103) lose loose (to)-1-sama NA NA NA NA NA NA
103 103) lose NA NA NA NA drop-1 (to)-budun NA NA
103 103) lose fall (to)-2-dia NA NA NA NA NA NA
103 103) lose NA fall (to)-4-to NA NA NA NA NA
103 103) lose NA NA forget-1-nyina NA NA NA NA
103 103) lose NA NA NA NA NA throw-1 (to)-fili NA
104 104) drown NA NA NA remain-to NA NA NA
104 104) drown NA NA NA die-1-kha NA NA NA
104 104) drown NA NA NA NA disappear-tunu NA NA
104 104) drown NA enter (to)-1-so NA NA NA NA NA
104 104) drown NA NA NA NA NA leave (go away)-1-dho leave (go away)-1-dho
104 104) drown NA NA remain-to NA NA NA NA
105 105) kill NA kill-1-faxa NA NA kill-1-faxa kill-1-faxa kill-1-faxa
105 105) kill kill-2-je NA kill-2-je kill-2-je NA NA NA
106 106) hit NA NA NA NA NA 0hit-kele 0hit-kele
106 106) hit NA NA NA NA beat-1-bugo NA NA
106 106) hit NA beat-2-dokpe NA NA NA NA NA
106 106) hit NA NA strike-2-ma strike-2-ma NA NA NA
107 107) kiss NA NA NA NA NA NA stand (to)-1-d’o
108 108) read NA NA read-2-lonong NA NA NA NA
108 108) read NA NA NA NA NA NA go out (to)-bo
108 108) read NA read-1-kara NA NA read-1-kara NA NA
108 108) read say-1-fo NA NA say-1-fo NA NA NA
108 108) read NA NA say-5-gee NA NA NA NA
109 109) move smth NA NA NA NA NA 0move-tumu 0move-tumu
109 109) move smth NA NA go out (to)-bo NA NA NA NA
109 109) move smth NA NA NA NA move (to)-3-lamaga NA NA
109 109) move smth NA NA NA noise-2-vin NA NA NA
109 109) move smth NA NA shake-1-miimii NA NA NA NA
110 110) respect NA NA do-1-ke NA NA NA NA
110 110) respect NA give (to)-3-fe NA NA NA NA NA
110 110) respect go out (to)-bo NA NA NA NA NA NA
110 110) respect NA NA NA NA NA heavy-1-bi heavy-1-bi
110 110) respect NA NA NA NA respect-3-bonya NA NA
110 110) respect NA NA sit (to)-2-yaga NA NA NA NA
111 111) disdain NA NA spoil-1-sile NA NA NA NA
111 111) disdain NA NA NA do-1-ke NA NA NA
111 111) disdain go out (to)-bo NA go out (to)-bo NA NA NA NA
111 111) disdain NA NA lie down-1-d’a NA NA NA NA
111 111) disdain NA NA NA NA loathe-nyigin NA NA
111 111) disdain NA NA NA see (to)-1-ye NA NA NA
112 112) be happy about NA NA NA NA fill (to)-1-pa NA NA
112 112) be happy about NA NA good-2-di NA NA NA NA
112 112) be happy about NA NA NA NA satisfy-wasa NA NA
112 112) be happy about NA tasty-nene NA NA NA tasty-nene tasty-nene
113 113) fall in love with NA NA lie down-1-d’a lie down-1-d’a NA NA NA
113 113) fall in love with NA love-xani NA NA NA NA NA
113 113) fall in love with NA NA NA NA passion-jarabi NA NA
113 113) fall in love with NA NA NA NA NA stand (to)-1-to stand (to)-1-to
114 114) trust in sb NA NA NA NA lie down-1-d’a NA lie down-1-d’a
115 115) have pity of NA catch-4-song NA NA NA NA NA
115 115) have pity of NA NA do-1-ke do-1-ke NA NA NA
115 115) have pity of NA NA NA NA pity-2-hina NA NA
116 116) be envious of NA NA cut-1 (to)-kan NA NA NA NA
116 116) be envious of NA NA NA do-1-ke NA NA NA
116 116) be envious of do-5-wo NA NA NA NA NA NA
116 116) be envious of NA NA NA NA NA fill (to)-1-pa NA
116 116) be envious of NA NA NA NA hate-xoni NA NA
116 116) be envious of NA NA swell-3-fuunu NA NA NA NA
117 117) be angry with NA NA bind-gidi NA NA NA NA
117 117) be angry with NA NA tie-1 NA NA NA NA
117 117) be angry with NA NA bend-4-kula NA NA NA NA
117 117) be angry with NA bitter-2-xunan NA NA NA NA NA
117 117) be angry with boil-3-fili NA NA NA NA NA NA
117 117) be angry with NA NA NA NA NA NA catch-4-song
117 117) be angry with NA NA NA NA pain-1-dimi NA NA
117 117) be angry with NA NA NA NA NA pain-2-soli NA
117 117) be angry with NA NA NA take-2-si NA NA NA
118 118) be surprised about NA NA NA do-1-ke NA NA NA
118 118) be surprised about NA NA NA NA NA NA knock down-kula
118 118) be surprised about NA NA NA NA NA throw-1 (to)-fili NA
118 118) be surprised about NA NA throw-2 (to)-zu NA NA NA NA
119 119) love smth NA NA NA do-1-ke NA NA NA
119 119) love smth NA NA NA NA good-2-di NA NA
119 119) love smth please (to)-so NA NA NA NA NA NA
119 119) love smth NA tasty-nene NA NA NA NA NA
120 120) enjoy/ take pleasure in NA NA NA NA go out (to)-bo NA NA
120 120) enjoy/ take pleasure in NA knock down-kula NA NA NA NA NA
120 120) enjoy/ take pleasure in NA NA NA see (to)-1-ye NA NA NA
120 120) enjoy/ take pleasure in NA NA take-2-si NA NA NA NA
120 120) enjoy/ take pleasure in NA NA NA NA NA tasty-nene NA
121 121) want NA NA NA do-1-ke NA NA NA
122 122) be angry with = 117? boil-3-fili NA NA NA NA NA NA
122 122) be angry with = 117? NA NA NA NA NA NA catch-4-song
123 123) take offense by sb NA NA NA NA NA do-1-ke NA
123 123) take offense by sb NA NA NA NA NA NA go out (to)-bo
123 123) take offense by sb NA NA NA lie down-1-d’a NA NA NA
124 124) make sad sb NA NA NA NA NA NA chase (to)-kpe
124 124) make sad sb NA cut-8 (to)-tebe NA NA NA NA NA
124 124) make sad sb NA NA do-1-ke NA NA NA NA
124 124) make sad sb NA NA NA NA enter (to)-2-dzon NA NA
124 124) make sad sb NA NA NA NA NA kill-1-faxa NA
124 124) make sad sb NA knock down-kula NA NA NA NA NA
124 124) make sad sb NA NA NA wound-3-gii NA NA NA
125 125) be surprised by NA NA NA NA end-1-ban NA NA
125 125) be surprised by NA NA NA NA NA NA throw-1 (to)-fili
126 126) despise sb NA NA kill-2-je NA NA NA NA
126 126) despise sb NA NA NA NA better-fisa NA NA
126 126) despise sb NA NA NA do-1-ke NA NA NA
126 126) despise sb NA NA NA NA NA go out (to)-bo go out (to)-bo
126 126) despise sb NA NA stand (to)-1-d’o NA NA NA NA
127 127) be sad because of sb NA NA fill (to)-1-pa NA NA NA NA
127 127) be sad because of sb NA NA break (to)-1-gali NA NA NA NA
127 127) be sad because of sb NA NA NA NA cry, weep (to)-1-kasi NA NA
127 127) be sad because of sb NA cut-8 (to)-tebe NA NA NA NA NA
127 127) be sad because of sb stand (to)-1-d’o NA NA NA NA NA NA
127 127) be sad because of sb NA NA NA NA NA NA tasty-nene
128 128) be annoyed by sb boil-3-fili NA NA NA NA NA NA
128 128) be annoyed by sb NA NA NA NA NA NA catch-4-song
128 128) be annoyed by sb NA NA NA NA pain-1-dimi NA NA
130 130) be embarrassed by sb NA cold-3-deli NA NA NA NA NA
130 130) be embarrassed by sb NA NA embarrass-2-kpala embarrass-2-kpala NA embarrass-2-kpala NA
130 130) be embarrassed by sb NA NA NA NA hinder-1-degun NA NA

Все этимологии:

Code
et <- readxl::read_xlsx("../GM_merged_wide_adpositions_VV.xlsx")
et |> 
  select(number, predicate_eng, stimuli, ends_with("etym")) |> 
  pivot_longer(names_to = "source", 
               values_to = "value", 
               ends_with("etym")) |> 
  na.omit() |> 
  filter(value != "0") |> 
  distinct() |> 
  mutate(value = str_split(value, ";")) |> 
  unnest_longer(value) |> 
  distinct() |> 
  mutate(value2 = 1) |>  
  pivot_wider(names_from = source, values_from = value2, values_fill = 0) |> 
  select(ends_with("etym"))  |> 
  rename(Guro = Guro_etym,
         Looma = Looma_etym,
         Mano = Mano_etym,
         Kono = Kono_etym,
         Dan_Gweetaa = Dan_etym,
         Bamana = Bamana_etym,
         Kpelle = Kpelle_etym) |> 
  t() |> 
  dist(method = "binary") ->
  etym

etym |> 
  hclust() |> 
  as.phylo()  %>%
  plot(main = "Adposition etimology (all stimuli)",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5, 
       font = 2)

Code
etym  |> 
  neighborNet() |> 
  plot()
title(main = "Adposition etimology (all stimuli)")

Кластеризация со случайным эквивалентом. Я запустил более 10 раз – ничего в структуре не поменялось, только длина ножек менялась.

Code
et |> 
  select(number, predicate_eng, stimuli, ends_with("etym")) |> 
  pivot_longer(names_to = "source", 
               values_to = "value", 
               ends_with("etym")) |> 
  na.omit() |> 
  filter(value != "0") |> 
  distinct() |> 
  mutate(value = str_split(value, ";")) |> 
  unnest_longer(value) |> 
  distinct() |> 
  mutate(value2 = 1) |> 
  group_by(number, source) |> 
  sample_n(size = 1) |> 
  ungroup() |> 
  mutate(value2 = 1) |>  
  pivot_wider(names_from = source, values_from = value2, values_fill = 0) |> 
  select(ends_with("etym")) |> 
  rename(Guro = Guro_etym,
         Looma = Looma_etym,
         Kono = Kono_etym,
         Mano = Mano_etym,
         Dan_Gweetaa = Dan_etym,
         Bamana = Bamana_etym,
         Kpelle = Kpelle_etym) |> 
  t() |> 
  dist(method = "binary") ->
  etym_random

etym_random |> 
  hclust() |> 
  as.phylo()  %>%
  plot(main = "Adposition etimology with random equivalents",
       tip.color = colors$color[match(.$tip.label, colors$language)],
       direction = "downwards",
       cex = 1.5, 
       font = 2)

Code
etym_random  |> 
  neighborNet() |> 
  plot()
title(main = "Adposition etimology with random equivalents")

Это сделано по следующей таблице:

Code
et |> 
  select(number, predicate_eng, ends_with("etym")) |> 
  pivot_longer(names_to = "source", 
               values_to = "value", 
               ends_with("etym")) |> 
  na.omit() |> 
  filter(value != "0") |> 
  distinct() |> 
  mutate(value = str_replace_all(value, "able, be", "able||| be"),
         value = str_replace_all(value, "bear, give", "bear||| give"),
         value = str_replace_all(value, ", shut", "||| shut"),
         value = str_replace_all(value, "cry, weep", "cry||| weep"),
         value = str_replace_all(value, "shoot, sting", "shoot||| sting"),
         value = str_replace_all(value, "stuck, get", "stuck||| get"),
         value = str_replace_all(value, ",", ";"),
         value = str_replace_all(value, "\\|\\|\\|", ","),
         value = str_split(value, ";")) |> 
  unnest_longer(value) |> 
  distinct() |> 
  mutate(value2 = value) |> 
  pivot_wider(names_from = source, values_from = value2) |>
  arrange(number, predicate_eng, value) |> 
  select(-value)
number predicate_eng Dan_etym Guro_etym Looma_etym Mano_etym Kono_etym Kpelle_etym Bamana_etym
1 hurt postposition with-3-ga NA NA NA NA NA NA
1 hurt postposition-on-1-ma NA NA NA NA NA NA
2 be sick with NA NA NA NA NA NA postposition at-la
2 be sick with postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
3 be afraid of NA NA NA postposition with-3-ga NA NA NA
3 be afraid of NA NA NA NA NA NA eye-nya
3 be afraid of NA palm of hand-degere NA NA NA NA NA
3 be afraid of NA NA postposition by-ba NA NA NA NA
3 be afraid of postposition-for-1-gon NA NA NA NA NA NA
3 be afraid of NA NA NA postposition-for-2-len NA NA NA
3 be afraid of NA NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
5 be sufficient to NA NA NA NA arm-2-je arm-2-je NA
5 be sufficient to NA NA NA NA hand hand NA
6 be like sb NA NA NA postposition by-ba NA NA NA
6 be like sb NA NA postposition with-3-ga NA NA NA NA
6 be like sb postposition-on-1-ma postposition-on-1-ma NA NA postposition-on-1-ma postposition-on-1-ma NA
6 be like sb NA NA NA NA NA NA side-3-fe
7 have trust NA NA NA NA NA NA postposition at-la
7 have trust NA postposition-for-2-len NA NA NA NA NA
7 have trust NA NA NA postposition-on-1-ma NA postposition-on-1-ma NA
7 have trust NA NA NA surface-1-ta surface-1-ta surface-1-ta NA
9 see what postposition-on-1-ma NA NA NA NA NA NA
10 influence NA surface-1-ta NA NA NA NA NA
11 meet NA postposition with-2-yan NA NA NA NA NA
11 meet NA NA NA NA postposition with-3-ga postposition with-3-ga NA
11 meet postposition-on-1-ma NA NA postposition-on-1-ma NA NA NA
13 win NA postposition-for-2-len NA NA NA NA NA
13 win postposition-on-1-ma NA NA postposition-on-1-ma NA postposition-on-1-ma NA
13 win NA NA NA NA NA NA postposition-on-2-xan
15 chase NA postposition with-2-yan NA NA NA NA NA
15 chase NA NA NA postposition with-3-ga postposition with-3-ga postposition with-3-ga NA
17 say NA NA NA NA NA NA postposition with-2-yan
17 say postposition-for-2-len postposition-for-2-len NA postposition-for-2-len NA NA NA
17 say NA NA postposition-on-1-ma NA postposition-on-1-ma postposition-on-1-ma NA
18 hold NA NA NA NA arm-2-je arm-2-je NA
18 hold NA NA NA NA hand hand NA
18 hold NA NA NA postposition-on-1-ma NA NA NA
18 hold NA surface-1-ta NA NA NA NA NA
19 catch NA NA NA NA NA NA postposition at-la
19 catch NA postposition-on-1-ma NA NA NA NA NA
21 reach NA NA NA NA NA NA postposition at-la
21 reach NA postposition-for-2-len NA NA NA NA NA
21 reach NA NA NA NA postposition-on-1-ma postposition-on-1-ma NA
21 reach NA NA NA surface-1-ta NA NA NA
22 touch NA NA NA NA NA NA postposition at-la
22 touch NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
23 fight sb NA postposition by-ba NA NA NA NA NA
23 fight sb postposition with-3-ga NA postposition with-3-ga NA NA NA NA
24 be friends with NA NA NA NA NA back-1-pulu NA
24 be friends with NA postposition with-2-yan NA NA NA NA NA
24 be friends with NA NA postposition with-3-ga NA postposition with-3-ga postposition with-3-ga NA
24 be friends with NA NA NA side-3-fe NA NA NA
25 think about sb NA NA NA NA NA NA postposition at-la
25 think about sb postposition in-3-gi NA NA NA NA NA NA
25 think about sb NA postposition-for-2-len NA NA NA NA NA
25 think about sb NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
25 think about sb NA NA NA surface-1-ta NA NA NA
28 wait postposition-for-1-gon NA NA NA NA NA NA
29 forget NA NA NA NA NA NA back-3-xo
29 forget postposition with-3-ga NA NA NA NA NA NA
29 forget NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
30 depend on NA NA NA NA NA NA postposition at-la
30 depend on NA postposition by-ba NA NA NA NA NA
30 depend on postposition-on-1-ma NA NA NA NA NA NA
35 avoid postposition with-3-ga NA NA NA NA NA NA
35 avoid NA postposition-on-1-ma NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
37 mock NA NA postposition in-2-sun NA NA NA NA
37 mock postposition-on-1-ma NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
38 have NA NA NA NA arm-2-je arm-2-je NA
38 have NA NA NA NA hand hand NA
38 have NA palm of hand-degere NA NA NA NA NA
38 have postposition-for-1-gon NA NA NA NA NA NA
38 have NA NA NA NA NA NA side-3-fe
39 seek NA NA NA postposition with-3-ga NA NA NA
40 paint NA postposition-on-1-ma NA NA NA postposition-on-1-ma NA
41 bite NA postposition-on-1-ma NA NA NA NA NA
42 be deprived NA NA NA postposition with-3-ga NA NA NA
42 be deprived NA NA NA NA NA NA postposition at-la
42 be deprived NA NA NA NA postposition in-2-sun postposition in-2-sun NA
42 be deprived NA NA NA postposition in-3-gi NA NA NA
42 be deprived NA NA postposition-on-1-ma NA NA NA NA
46 love NA NA NA postposition with-3-ga NA NA NA
46 love NA NA postposition-for-3-be NA NA NA NA
46 love NA postposition-on-1-ma NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
46 love NA NA NA NA NA NA side-3-fe
48 dream NA NA NA postposition with-3-ga postposition with-3-ga postposition with-3-ga NA
50 put on NA postposition-on-1-ma NA NA NA NA NA
51 call smth NA NA postposition with-3-ga NA postposition with-3-ga postposition with-3-ga NA
51 call smth NA NA NA postposition-for-2-len NA NA NA
52 punish NA postposition in-3-gi NA NA NA NA NA
52 punish NA NA postposition-on-1-ma NA NA NA NA
52 punish surface-1-ta NA NA NA NA NA NA
53 attack NA NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma
53 attack NA NA NA NA NA NA postposition-on-2-xan
53 attack surface-1-ta surface-1-ta NA NA NA NA NA
54 be filled with smth NA NA NA NA NA NA postposition at-la
54 be filled with smth NA postposition with-2-yan NA NA NA NA NA
54 be filled with smth postposition with-3-ga NA postposition with-3-ga postposition with-3-ga NA postposition with-3-ga NA
55 find smth postposition-on-1-ma NA NA NA NA NA NA
56 lack NA NA NA 0 NA NA NA
56 lack NA NA NA postposition with-3-ga NA NA NA
57 hate, detest NA NA NA postposition in-3-3 NA NA NA
57 hate, detest postposition-for-1-gon NA NA NA NA NA NA
57 hate, detest NA postposition-on-1-ma NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
58 like NA NA NA side-3-fe NA NA NA
58 like NA NA NA 0 NA NA NA
58 like NA NA NA NA NA NA postposition with-2-yan
58 like NA postposition-for-2-len NA postposition-for-2-len NA NA NA
58 like NA NA postposition-for-3-be NA NA NA NA
58 like NA NA NA NA postposition-on-1-ma NA NA
59 need NA NA NA NA NA NA postposition at-la
59 need NA NA postposition by-ba NA NA NA NA
59 need postposition-on-1-ma NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
60 surround around-zi around-zi NA NA NA NA NA
60 surround NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA NA
61 be left NA NA NA NA arm-2-je arm-2-je NA
61 be left NA NA NA NA hand hand NA
61 be left NA palm of hand-degere NA NA NA NA NA
64 be different NA NA NA NA NA NA postposition at-la
64 be different postposition-on-1-ma postposition-on-1-ma NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
65 fall behind NA NA back-1-pulu NA back-1-pulu back-1-pulu NA
65 fall behind NA NA NA NA NA NA back-3-xo
65 fall behind NA bottom-1-ju NA NA NA NA NA
65 fall behind NA NA NA side-3-fe NA NA NA
67 smell NA postposition with-2-yan NA NA NA NA NA
67 smell postposition-on-1-ma NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
68 traverse, cross NA NA NA surface-1-ta NA NA NA
73 approach NA around-zi NA NA NA NA NA
73 approach postposition-on-1-ma NA NA NA NA NA postposition-on-1-ma
74 leave NA NA NA NA NA NA postposition at-la
75 75) cover surface-1-ta surface-1-ta NA NA NA NA NA
75 75) cover postposition-on-1-ma postposition-on-1-ma NA NA NA NA NA
75 75) cover NA surface-1-ta NA surface-1-ta NA NA NA
76 76) remember NA NA postposition in-2-sun NA NA NA NA
76 76) remember NA NA NA NA NA NA postposition at-la
76 76) remember NA postposition in-3-gi NA NA NA NA NA
76 76) remember postposition with-3-ga NA NA postposition with-3-ga NA NA NA
76 76) remember NA NA postposition-on-1-ma NA postposition-on-1-ma NA NA
76 76) remember NA NA NA surface-1-ta NA NA NA
76 76) remember NA NA NA NA NA surface-2-ga NA
77 77) help NA postposition by-ba postposition by-ba NA NA NA NA
77 77) help NA NA NA postposition-on-1-ma NA postposition-on-1-ma NA
77 77) help NA NA NA NA trace-1-pon NA NA
79 79) fall into NA NA NA NA NA NA postposition-on-2-xan
80 80) cut with NA postposition with-2-yan NA NA NA NA NA
80 80) cut with postposition with-3-ga NA postposition with-3-ga postposition with-3-ga postposition with-3-ga postposition with-3-ga NA
81 81) stick to smth NA NA postposition by-ba NA NA NA NA
81 81) stick to smth postposition-on-1-ma NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
81 81) stick to smth NA surface-1-ta NA NA NA NA NA
82 82) lose to smb NA NA NA NA NA NA arm-1-bolo
82 82) lose to smb NA NA NA NA NA NA hand
82 82) lose to smb NA NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
83 83) be happy about, se rejouir de NA postposition by-ba NA NA NA NA NA
83 83) be happy about, se rejouir de NA NA NA NA NA NA postposition at-la
83 83) be happy about, se rejouir de NA postposition-on-1-ma postposition-on-1-ma NA postposition-on-1-ma postposition-on-1-ma NA
84 84) speak with NA NA NA side-3-fe NA NA NA
84 84) speak with postposition-for-2-len NA NA postposition-for-2-len NA NA NA
84 84) speak with NA NA NA NA NA NA side-3-fe
85 85) give birth to NA NA NA postposition with-3-ga postposition with-3-ga postposition with-3-ga NA
86 86) let fall smth NA NA NA NA NA NA arm-1-bolo
86 86) let fall smth NA NA NA NA NA NA hand
87 87) diriger, gouverner before-dhie NA NA NA NA NA NA
87 87) diriger, gouverner NA NA NA NA NA NA postposition with-2-yan
88 88) miss postposition with-3-ga NA NA NA NA NA NA
88 88) miss NA NA NA NA NA NA postposition at-la
88 88) miss surface-1-ta NA NA NA NA NA NA
89 89) follow NA NA back-1-pulu NA NA back-1-pulu NA
89 89) follow NA bottom-1-ju NA NA NA NA NA
89 89) follow occiput-3-kee NA NA NA NA NA NA
89 89) follow NA NA NA NA NA NA postposition at-la
90 90) climb down NA NA NA NA NA NA postposition at-la
91 91) listen to smth postposition-on-1-ma NA postposition-on-1-ma postposition-on-1-ma NA postposition-on-1-ma NA
91 91) listen to smth NA NA NA NA NA NA side-3-fe
92 92) listen to smb NA NA NA NA NA NA postposition with-2-yan
92 92) listen to smb NA NA postposition-for-3-be NA NA NA NA
93 93) hear NA NA postposition-on-1-ma NA NA NA NA
94 94) mix up with smth NA postposition with-2-yan NA NA NA NA NA
94 94) mix up with smth postposition with-3-ga NA NA postposition with-3-ga postposition with-3-ga postposition with-3-ga NA
97 97) appear in a dream NA NA NA NA NA NA postposition at-la
97 97) appear in a dream postposition with-3-ga NA NA postposition with-3-ga postposition with-3-ga postposition with-3-ga NA
98 98) agree NA NA NA postposition by-ba NA NA NA
98 98) agree NA NA NA NA postposition in-2-sun NA NA
98 98) agree postposition-on-1-ma NA postposition-on-1-ma NA NA NA postposition-on-1-ma
99 99) dispute NA postposition by-ba NA NA NA NA NA
99 99) dispute NA postposition with-2-yan NA NA NA NA NA
99 99) dispute postposition with-3-ga NA NA NA NA NA NA
99 99) dispute NA NA NA postposition-on-1-ma NA NA NA
100 100) cost NA NA NA NA NA NA postposition with-2-yan
100 100) cost NA NA postposition with-3-ga postposition with-3-ga postposition with-3-ga postposition with-3-ga NA
101 101) shoot at NA postposition by-ba NA NA NA NA NA
101 101) shoot at postposition-on-1-ma NA postposition-on-1-ma postposition-on-1-ma NA postposition-on-1-ma NA
103 103) lose NA NA NA NA NA NA back-3-xo
104 104) drown NA NA bottom-2-bu NA NA NA NA
104 104) drown NA NA NA NA NA NA postposition at-la
104 104) drown postposition by-ba NA NA postposition by-ba NA NA NA
104 104) drown NA NA NA NA postposition in-2-sun postposition in-2-sun NA
107 107) kiss NA postposition-on-1-ma NA NA NA NA NA
110 110) respect postposition in-3-gi NA NA NA NA NA NA
110 110) respect NA NA postposition-on-1-ma NA NA NA NA
111 111) disdain NA NA NA NA NA NA postposition at-la
111 111) disdain postposition in-3-gi NA NA NA NA NA NA
111 111) disdain NA postposition-on-1-ma NA postposition-on-1-ma postposition-on-1-ma NA NA
111 111) disdain NA NA NA side-3-fe NA NA NA
111 111) disdain NA NA NA NA NA trace-1-pon NA
112 112) be happy about NA NA NA 0 NA NA NA
112 112) be happy about NA NA NA NA NA NA postposition at-la
112 112) be happy about NA NA NA NA NA NA postposition with-2-yan
112 112) be happy about NA NA postposition-on-1-ma NA NA NA NA
112 112) be happy about NA NA NA side-3-fe NA NA NA
112 112) be happy about NA NA NA NA trace-1-pon trace-1-pon NA
113 113) fall in love with NA NA NA NA NA NA postposition at-la
113 113) fall in love with postposition in-3-gi NA NA NA NA NA NA
113 113) fall in love with NA NA postposition with-3-ga NA NA NA NA
113 113) fall in love with NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA
114 114) trust in sb NA NA NA NA NA NA postposition at-la
114 114) trust in sb NA surface-1-ta NA NA surface-1-ta NA NA
115 115) have pity of NA NA NA NA NA NA postposition at-la
115 115) have pity of NA NA NA postposition-on-1-ma NA postposition-on-1-ma NA
116 116) be envious of postposition with-3-ga NA NA NA NA NA NA
116 116) be envious of NA postposition-on-1-ma NA postposition-on-1-ma NA postposition-on-1-ma NA
116 116) be envious of NA NA NA NA trace-1-pon NA NA
117 117) be angry with NA postposition by-ba NA NA NA NA NA
117 117) be angry with NA NA postposition-on-1-ma postposition-on-1-ma postposition-on-1-ma NA NA
117 117) be angry with side-3-fe NA NA NA NA NA NA
117 117) be angry with NA NA NA NA NA trace-1-pon NA
117 117) be angry with NA NA NA NA NA NA under-1-kodo
118 118) be surprised about NA NA NA NA NA NA postposition at-la
118 118) be surprised about postposition with-3-ga NA postposition with-3-ga postposition with-3-ga NA NA NA
118 118) be surprised about NA postposition-on-1-ma NA NA NA postposition-on-1-ma NA
119 119) love smth NA NA NA NA NA NA postposition with-2-yan
119 119) love smth NA NA NA postposition with-3-ga NA NA NA
119 119) love smth NA postposition-for-2-len NA NA NA NA NA
119 119) love smth NA NA NA NA postposition-on-1-ma postposition-on-1-ma NA
120 120) enjoy/ take pleasure in NA postposition with-2-yan NA NA NA NA NA
120 120) enjoy/ take pleasure in NA NA postposition with-3-ga NA NA NA NA
121 121) want NA postposition by-ba NA NA NA NA NA
121 121) want NA NA NA postposition with-3-ga NA NA NA
121 121) want NA NA postposition-on-1-ma NA NA NA NA
121 121) want side-3-fe NA NA side-3-fe NA NA side-3-fe
121 121) want NA NA NA NA trace-1-pon trace-1-pon NA
122 122) be angry with = 117? NA postposition by-ba NA NA NA NA NA
122 122) be angry with = 117? NA NA NA NA trace-1-pon NA NA
123 123) take offense by sb before-dhie NA NA NA NA NA NA
123 123) take offense by sb NA NA NA NA postposition in-2-sun NA NA
123 123) take offense by sb NA NA NA NA NA postposition with-3-ga NA
123 123) take offense by sb NA postposition-on-1-ma NA NA NA NA NA
124 124) make sad sb NA NA NA NA NA NA postposition at-la
124 124) make sad sb NA NA postposition-on-1-ma NA NA NA NA
124 124) make sad sb NA NA NA NA trace-1-pon NA NA
125 125) be surprised by NA postposition-on-1-ma NA NA postposition-on-1-ma NA NA
126 126) despise sb NA NA NA NA postposition-on-1-ma NA postposition-on-1-ma
127 127) be sad because of sb NA NA postposition by-ba NA NA NA NA
127 127) be sad because of sb NA NA NA postposition with-3-ga NA NA NA
127 127) be sad because of sb NA postposition-on-1-ma NA NA postposition-on-1-ma NA NA
127 127) be sad because of sb NA NA NA NA NA NA side-3-fe
128 128) be annoyed by sb NA NA NA mouth-1-da NA NA NA
128 128) be annoyed by sb postposition-for-2-len NA NA NA NA NA NA
128 128) be annoyed by sb NA postposition-on-1-ma NA NA NA NA NA
128 128) be annoyed by sb NA NA NA NA trace-1-pon NA NA
129 129) sympathise to sb NA NA NA NA NA NA postposition-on-1-ma
130 130) be embarrassed by sb NA NA NA 0 NA NA NA
130 130) be embarrassed by sb NA NA NA postposition with-3-ga NA NA NA
130 130) be embarrassed by sb NA NA postposition-on-1-ma NA NA postposition-on-1-ma NA
Code
library(tidyverse)
mano_kpelle_pre <- readxl::read_xlsx("../say_stimuli.xlsx", sheet = "mano + kpelle")

mano_kpelle_pre |> 
  rename(number = Number,
         construction = `Mano construction`,
         construction_type = `Mano extended construction type`,
         adposition = `Mano Postposition`,
         verb = `Mano verb`,
         verb_meaning = `Mano Complex verb meaning`) |> 
  mutate(language = "Mano") |> 
  select(number, construction, construction_type, adposition, verb, verb_meaning, language) |> 
  filter(!is.na(construction)) ->
  mano

mano_kpelle_pre |> 
  rename(number = Number,
         construction = `Kpelle construction`,
         construction_type = `Kpelle extended construction type`,
         adposition = `Kpelle postposition`,
         verb = `Kpelle verb`,
         verb_meaning = `Kpelle complex verb meaning`) |> 
  mutate(language = "Kpelle") |> 
  select(number, construction, construction_type, adposition, verb, verb_meaning, language) |> 
  filter(!is.na(construction)) ->
  kpelle

rm(mano_kpelle_pre)

kono_pre <- readxl::read_xlsx("../say_stimuli.xlsx", sheet = "kono")

kono_pre |> 
  rename(number = Number,
         construction = `Kono construction...8`,
         construction_type = `Kono extended construction`,
         adposition = `Kono adposition`,
         verb = `Kono verb`,
         verb_meaning = `Kono complex verb`) |> 
  mutate(language = "Kono") |> 
  select(number, construction, construction_type, adposition, verb, verb_meaning, language) |> 
  filter(!is.na(construction)) ->
  kono

rm(kono_pre)

# I renamed one of the columns to "Looma extended construction"
looma_pre <- readxl::read_xlsx("../say_stimuli.xlsx", sheet = "Looma")

looma_pre |> 
  rename(number = Number,
         construction = `Looma construction`,
         construction_type = `Looma extended construction`,
         adposition = `Looma Postposition`,
         verb = `Looma Verb`,
         verb_meaning = `Looma Complex Verb`) |> 
  mutate(language = "Looma") |> 
  select(number, construction, construction_type, adposition, verb, verb_meaning, language) |> 
  filter(!is.na(construction)) ->
  looma

rm(looma_pre)

# I renamed one of the columns to "Guro extended construction"
guro_pre <- readxl::read_xlsx("../say_stimuli.xlsx", sheet = "Guro")

guro_pre |> 
  rename(number = Number,
         construction = `Guro construction`,
         construction_type = `Guro extended construction`,
         adposition = `Guro Postposition`,
         verb = `Guro Verb`,
         verb_meaning = `Guro Complex Verb`) |> 
  mutate(language = "Guro") |> 
  select(number, construction, construction_type, adposition, verb, verb_meaning, language) |> 
  filter(!is.na(construction)) ->
  guro

rm(guro_pre)

dan_pre <- readxl::read_xlsx("../say_stimuli.xlsx", sheet = "Dan Gweetaa from Vydrin")

dan_pre |> 
  rename(number = Number,
         construction = `Dan construction`,
         construction_type = `Dan extended construction type`,
         adposition = `Dan Postposition`,
         verb = `Dan Verb`, 
         verb_meaning = `Dan complex verb meaning`) |> 
  mutate(language = "Dan_Gweetaa") |> 
  select(number, construction, construction_type, adposition, verb, verb_meaning, language) |> 
  filter(!is.na(construction)) ->
  dan

rm(dan_pre)

bamana_pre <- readxl::read_xlsx("../say_stimuli.xlsx", sheet = "Bambara Vydrin")
bamana_pre |> 
  rename(number = Number,
         construction = `Bamana construction`,
         construction_type = `Bamana extended construction type`,
         adposition = `Bamana Postposition`,
         verb = `Bamana Verb`, 
         verb_meaning = `Bamana complex verb meaning`) |> 
  mutate(language = "Bamana") |> 
  select(number, construction, construction_type, adposition, verb, verb_meaning, language) |> 
  filter(!is.na(construction)) ->
  bamana

guro |> 
  bind_rows(kono, kpelle, looma, mano, dan, bamana) |>
  write_csv("../GM_merged.csv", na = "")

readxl::read_xlsx("../say_stimuli.xlsx", sheet = "stimuli_general") |> 
  select(Number, `English predicate`, `Stimulus sentence (SAY)`, `Semantic types`) |> 
  rename(number = Number,
         predicate_eng = `English predicate`,
         stimuli = `Stimulus sentence (SAY)`,
         semantic_type = `Semantic types`) ->
  stimuli

read_csv("../GM_merged.csv") |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |>
  group_by(number) |> 
  add_count(construction_type) |> 
  arrange(number, desc(n)) |> 
  select(-adposition) |> 
  group_by(number, construction_type, language, n) |> 
  reframe(construction = str_c(construction, collapse = "; ")) |> 
  pivot_wider(names_from = language, values_from = construction, values_fill = "") |> 
  group_by(number) |> 
  mutate(id = 1:n()) |>
  ungroup() |> 
  left_join(stimuli) |> 
  select(number, semantic_type, predicate_eng, stimuli, id, n, construction_type, Guro, Looma, Mano, Dan_Gweetaa, Kono, Kpelle, Bamana, Kono) |> 
  writexl::write_xlsx("../GM_merged_wide.xlsx")

read_csv("../GM_merged.csv") |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |>
  select(-construction) |>
  distinct(number, construction_type, language, adposition) |> 
  group_by(number, construction_type, language) |> 
  reframe(adposition = str_c(adposition, collapse = "; ")) |> 
  pivot_wider(names_from = language, values_from = adposition, values_fill = "") |> 
  group_by(number) |> 
  mutate(id = 1:n()) |>
  ungroup() |> 
  left_join(stimuli) |> 
  select(number, semantic_type, predicate_eng, stimuli, id, construction_type, Guro, Looma, Mano, Dan_Gweetaa, Kono, Kpelle, Bamana, Kono) |> 
  writexl::write_xlsx("../GM_merged_wide_adpositions.xlsx")

read_csv("../GM_merged.csv") |> 
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type)) |>
  select(-construction) |>
  distinct(number, construction_type, language, verb) |> 
  group_by(number, construction_type, language) |> 
  reframe(verb = str_c(verb, collapse = "; ")) |> 
  pivot_wider(names_from = language, values_from = verb, values_fill = "") |> 
  group_by(number) |> 
  mutate(id = 1:n()) |>
  ungroup() |> 
  left_join(stimuli) |> 
  select(number, predicate_eng, stimuli, id, construction_type, Guro, Looma, Mano, Dan_Gweetaa, Kpelle, Bamana, Kono) |> 
  writexl::write_xlsx("../GM_merged_wide_verb.xlsx")

read_csv("../GM_merged.csv") |>
  filter(!str_detect(construction, "no equivalent"),
         !is.na(construction_type),
         !is.na(verb_meaning)) |>
  select(-construction) |>
  distinct(number, construction_type, language, verb, verb_meaning) |> 
  mutate(verb_meaning = str_c(verb_meaning, " (", verb, ")")) |> 
  group_by(number, construction_type, language) |>
  reframe(verb_meaning = str_c(verb_meaning, collapse = "; ")) |>
  pivot_wider(names_from = language, values_from = verb_meaning, values_fill = "") |>
  group_by(number) |>
  mutate(id = 1:n()) |>
  ungroup() |>
  left_join(stimuli) |>
  select(number, predicate_eng, stimuli, id, construction_type, Guro, Looma, Mano, Dan_Gweetaa, Kpelle, Bamana, Kono) |>
  writexl::write_xlsx("../GM_merged_wide_verb_meaning.xlsx")